powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Есть аналог оператора with Делфи?
6 сообщений из 6, страница 1 из 1
Есть аналог оператора with Делфи?
    #38048421
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть ли в java аналог оператора with Делфей, который позволяет сократить запись, например:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
with object do begin
  method1();
  method2();
end;

вместо:
object.method1();
object.method2();



Зачем это: есть в EJB два класса, один с интерфейсом EJB1, второй без EJB2. У класса EJB1 есть метод getEJB2, который возвращает ссылку на класс EJB2. Чтобы не делать инерфейс к классу EJB2 хочу сделать так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with EJB1.getEJB2 do begin
  method1;
  method2;
end;

Иначе придётся делать интерфейс и писать так:
EJB2Local ejb2Local;

ejb2Local = EJB1.getEJB2;
ejb2Local.method1;
ejb2Local.method2;



Подскажите чайнику :)).
...
Рейтинг: 0 / 0
Есть аналог оператора with Делфи?
    #38048441
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulpЕсть ли в java аналог оператора with Делфей, который позволяет сократить запись, например:

Нет. Во-первых как-то не очень заметно что запись сократилась. Во-вторых это вроде для одного типа, а у вас ниже для разных типов. Duck Typing в Java нет.
В-третих, если для разных типов\объектов одна и та же последовательность, то можно её вынести в отдельный метод. Или применить Visitor.

pulpесть в EJB два класса, один с интерфейсом EJB1, второй без EJB2.
[/quot]
Летели два крокодила, один зеленый, второй на север. EJB2 интерфейс, или что?

pulpУ класса EJB1 есть метод getEJB2, который возвращает ссылку на класс EJB2.
Чтобы не делать инерфейс к классу EJB2 хочу сделать так:

В чем проблема сделать интерфейс. Класс EJB2 или EJB или POJO?


pulpИначе придётся делать интерфейс и писать так:
EJB2Local ejb2Local;
ejb2Local = EJB1.getEJB2;
ejb2Local.method1;
ejb2Local.method2;

Т.е. у класса EJB2 нет методов, а если ему сделать интерфейс, то у него эти методы вдруг появятся?
Local/Remote это вообще отдельная тема.
...
Рейтинг: 0 / 0
Есть аналог оператора with Делфи?
    #38048459
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНет. Во-первых как-то не очень заметно что запись сократилась. Во-вторых это вроде для одного типа, а у вас ниже для разных типов. Duck Typing в Java нет.
В-третих, если для разных типов\объектов одна и та же последовательность, то можно её вынести в отдельный метод. Или применить Visitor.

Тип один: object.

BlazkowiczЛетели два крокодила, один зеленый, второй на север. EJB2 интерфейс, или что?

Есть два класса EJB1 и EJB2. У EJB1 есть интерфейс EJB1Local, у EJB2 нет интерфейса. У класса EJB2 есть два метода (method1 и method2). Класс EJB1 имеет метод getEJB2, который возвращает ссылку на класс EJB2. Нужно в клиенте вызвать оба метода класса EJB2. При этом возможен такой вызов: EJB1.getEJB2.method1.

BlazkowiczВ чем проблема сделать интерфейс. Класс EJB2 или EJB или POJO?

Если можно не делать, зачем делать? :)
...
Рейтинг: 0 / 0
Есть аналог оператора with Делфи?
    #38048476
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulpТип один: object.

Тип переменной и тип экземпляра не одно и тоже. У типа object нет method1 и method2. Чтобы вызвать конкретный метод нужно знать конкретный тип. Ну или рефлексией.

pulpЕсть два класса EJB1 и EJB2. У EJB1 есть интерфейс EJB1Local, у EJB2 нет интерфейса. У класса EJB2 есть два метода (method1 и method2). Класс EJB1 имеет метод getEJB2, который возвращает ссылку на класс EJB2. Нужно в клиенте вызвать оба метода класса EJB2. При этом возможен такой вызов: EJB1.getEJB2.method1.


Код: java
1.
2.
3.
4.
EJB1 e1 = getEJB1();
EJB2 e2 = e1.getEJB2();
e2.method1();
e2.method2();



pulpЕсли можно не делать, зачем делать? :)
Ну, используйте конкретный тип EJB2 вместо интерфейса.
...
Рейтинг: 0 / 0
Есть аналог оператора with Делфи?
    #38048733
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pulp,
У тебя и в дельфи работать не будет.
Ты спутал сабж с полиморфизмом.
...
Рейтинг: 0 / 0
Есть аналог оператора with Делфи?
    #38049339
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я себе почему-то вбил в голову, что из клиента нельзя обратиться к классу EJB2 без реализации для него интерфейса. Оказывается можно! Конечно тогда буду делать:
EJB1 e1 = getEJB1();
EJB2 e2 = e1.getEJB2();
e2.method1();
e2.method2();

Пример с крокодилами помог :)). Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Есть аналог оператора with Делфи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]