|
|
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Есть два интерфейса и класс Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Теперь я хочу реализовать такой класс Код: java 1. 2. 3. но так, чтобы все три метода Test() выполняли разные действия. Это возможно? Т.е. мне нужно для произвольного метода класса TestB с нужной сигнатурой, указать, что он реализует метод интерфейса И второй вопрос Код: java 1. 2. 3. 4. 5. 6. 7. 8. Могу ли я как-то указать, что все методы интерфейса нужно дергать из поля test или я должен явно в классе Test перечислить все методы интерфейса ITest и вручную в них обратится к методам поля? Аналогичный вопрос если поле test - экземпляр некоторого класса, который явно не реализует интерфейс ITest, но который, содержит все необходимые методы С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 17:40 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия. Это возможно? Нет. _Vasilisk_Могу ли я как-то указать, что все методы интерфейса нужно дергать из поля test или я должен явно в классе Test перечислить все методы интерфейса ITest и вручную в них обратится к методам поля? Либо java.lang.reflect.Proxy, либо любое другое AOP. Либо нагенерить методов. Нормальные IDE умеют генерить методы для "делегатов". _Vasilisk_Аналогичный вопрос если поле test - экземпляр некоторого класса, который явно не реализует интерфейс ITest, но который, содержит все необходимые методы Duck Typing в Java отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 17:56 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия. Это возможно? Нет ничего невозможного для пытливого ума, однако представьте себе три бумажные карточки одинакового размера. Все три одинаковым образом разлинованы шахматной доской. На карточке A в клеточках нарисованы шахматные фигуры. На карточках 1 и 2 пробита дырочка в клетке E2. Вопрос можно ли накрыв карточку A поочередно карточками 1 и 2 увидеть разные фигуры в клетке E2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 18:05 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczDuck Typing в Java отсутствует. А wikipedia говорит об обратном. Кстати, в 8 java можно сделать default method для интерфейса, который будет дергать делегата. Только вот зачем это все? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 18:22 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевТолько вот зачем это все?Пример номер раз Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод. Ответ на вопрос - я получил. Спасибо большое. Вопрос был чисто теоретическим. Просто я пришел в джаву из делфи, а там такие вещи возможны. Вот решил уточнить как здесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 19:52 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевА wikipedia говорит об обратном. Нет, она не говорит об обратном. Она говорит, что это и многое другое можно эмулировать, например, рефелексией. Все о чем автор спрашивает, можно добится и рефлексией и манипуляциями с байт кодом. Но в Java языке от этого указанных фич не появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:20 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод. На лямдах это делается проще По-моему даже такое должно работать: Код: java 1. Вы вместо того чтобы обрисовать проблему, придумали решение в стиле Delphi и спрашиваете о нем. А если обрисовать проблему целиком, ведь, возможно кто-нибудь подскажет решение в стиле Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:24 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Рефлексия - часть Java. Значит все, что можно сделать через рефлексию - можно сделать на Java. Сделают это в виде синтаксического сахара или нет уже не столь важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:37 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевРефлексия - часть Java. Значит все, что можно сделать через рефлексию - можно сделать на Java. Сделают это в виде синтаксического сахара или нет уже не столь важно. JVM часть Java. Значит всё что есть в Scalа, которая работает на JVM, есть и в Java. Автор спрашивает о языке, а не платформе. Что ты такой упертый в пятницу-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:42 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия. IMHO это действо ни для чего полезного, кроме обфускации кода не нужно. Только грабли раскладывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:44 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Сергей АрсеньевТолько вот зачем это все?Пример номер раз Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод. Просто передаёшь (или заранее создаёшь в переменной) new Runnable(){run(){run1()} - как-то так. _Vasilisk_Ответ на вопрос - я получил. Спасибо большое. Вопрос был чисто теоретическим. Просто я пришел в джаву из делфи, а там такие вещи возможны. Вот решил уточнить как здесь В delphi интерйфейсы другие- там это отдельная сущность из мира винды и преобразование между интерфейсами одного класса это интересная операция. В java решается анонимными классами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:45 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, JVM это не часть JAVA это способ его (языка программирования) реализации (стандартный). То что топором можно рубить дрова, а можно бриться не значит, что волосы - дрова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:47 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод. Авторы Java -принципиальные противники множественного наследования. Так что только через прокси. Т.е прокси класс реализует Runnable. По всем методам кроме run (и другие какие надо переопределить) дергает внутренний класс. И содержит метод возвращающий оригинальный класс, для использования теми, кому нужен оригинальный. В идеале у оригинального класса надо бы определить метод getAsNotRunnable() - который возвращает this, а у прокси внутренний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:57 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев JVM это не часть JAVA это способ его (языка программирования) реализации (стандартный). Спецификация Java включает в себя JLS и JVM спецификации. Так что не надо продолжать пороть ерунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 09:58 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСпецификация Java включает в себя JLS и JVM спецификации. Так что не надо продолжать пороть ерунду. Смотрю сюда и вижу, что это разные строчки. ЧЯДНТ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 10:07 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Смотрю сюда и вижу, что это разные строчки. ЧЯДНТ? И обе находятся в секции Java SE Specifications. Нет Java без JVM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 10:12 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczАвтор спрашивает о языке, а не платформе. Что ты такой упертый в пятницу-то? не выспался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 10:31 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевJVM это не часть JAVAЕсли вы о JLS, то это - правдаэто способ его (языка программирования) реализации (стандартный)А это - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:38 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, данный кейс решается не наследованием а композицией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:41 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovА это - нет. Т.е. на jvm нельзя выполнить программу, написанную на языке программирования Java, или это не стандартный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:46 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевТ.е. на jvm нельзя выполнить программу, написанную на языке программирования Java, или это не стандартный вариант?Ни то и ни другое. JVM исполняет байт-код. Она накладывает определённые ограничения на структуру этого кода, но ей глубоко фиолетово, откуда этот код берётся. JVM не зависит ни от JLS ни от Java SE/EE API. Ортогональные базисы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:49 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovJVM не зависит ни от JLS ни от Java SE/EE API. Ортогональные базисы То что на пилу можно использовать как музыкальный инструмент не означает, что она не является стандартным инструментом для распила бревен. В таком варианте мой посыл более понятен? P.S. Хотя с рефлексией я был не прав - это не возможность языка, а его стандартной библиотеки. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:56 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Для термина Java существует некий дуализм смыслов. Его иногда называют языком. Иногда - машиной. Тоесть машину могуть называть JVM а иногда и Java. Вобщем понимание зависит от контекста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:01 |
|
||
|
Реализация интерфейсов
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевВ таком варианте мой посыл более понятен?Нет, поскольку речь не шла о музыке и распиле брёвен, а только о распиле брёвен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38758440&tid=2126544]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 491ms |

| 0 / 0 |
