powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация интерфейсов
25 сообщений из 25, страница 1 из 1
Реализация интерфейсов
    #38757918
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два интерфейса и класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
interface ITest1 {
  public void Test();
}

interface ITest2 {
  public void Test();
}

class TestA {
  public void Test() {
    ........
  }
}


Теперь я хочу реализовать такой класс
Код: java
1.
2.
3.
class TestB extend TestA implements ITest1, ITest2 {
   ......
}

но так, чтобы все три метода Test() выполняли разные действия. Это возможно? Т.е. мне нужно для произвольного метода класса TestB с нужной сигнатурой, указать, что он реализует метод интерфейса

И второй вопрос
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
interface ITest {
   .........
}

class Test implements ITest {
  private ITest test;
  ........
}

Могу ли я как-то указать, что все методы интерфейса нужно дергать из поля test или я должен явно в классе Test перечислить все методы интерфейса ITest и вручную в них обратится к методам поля?

Аналогичный вопрос если поле test - экземпляр некоторого класса, который явно не реализует интерфейс ITest, но который, содержит все необходимые методы


С уважением, Vasilisk
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38757961
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия. Это возможно?
Нет.

_Vasilisk_Могу ли я как-то указать, что все методы интерфейса нужно дергать из поля test или я должен явно в классе Test перечислить все методы интерфейса ITest и вручную в них обратится к методам поля?
Либо java.lang.reflect.Proxy, либо любое другое AOP. Либо нагенерить методов. Нормальные IDE умеют генерить методы для "делегатов".

_Vasilisk_Аналогичный вопрос если поле test - экземпляр некоторого класса, который явно не реализует интерфейс ITest, но который, содержит все необходимые методы
Duck Typing в Java отсутствует.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38757987
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия. Это возможно?
Нет ничего невозможного для пытливого ума, однако представьте себе три бумажные карточки одинакового размера.
Все три одинаковым образом разлинованы шахматной доской.
На карточке A в клеточках нарисованы шахматные фигуры.
На карточках 1 и 2 пробита дырочка в клетке E2.

Вопрос можно ли накрыв карточку A поочередно карточками 1 и 2 увидеть разные фигуры в клетке E2?
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758017
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczDuck Typing в Java отсутствует.
А wikipedia говорит об обратном.

Кстати, в 8 java можно сделать default method для интерфейса, который будет дергать делегата.

Только вот зачем это все?
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758107
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевТолько вот зачем это все?Пример номер раз
Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод.

Ответ на вопрос - я получил. Спасибо большое. Вопрос был чисто теоретическим. Просто я пришел в джаву из делфи, а там такие вещи возможны. Вот решил уточнить как здесь
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758402
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевА wikipedia говорит об обратном.

Нет, она не говорит об обратном. Она говорит, что это и многое другое можно эмулировать, например, рефелексией. Все о чем автор спрашивает, можно добится и рефлексией и манипуляциями с байт кодом. Но в Java языке от этого указанных фич не появится.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758406
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод.

На лямдах это делается проще
По-моему даже такое должно работать:
Код: java
1.
executor.submit(notRunnable:run());



Вы вместо того чтобы обрисовать проблему, придумали решение в стиле Delphi и спрашиваете о нем. А если обрисовать проблему целиком, ведь, возможно кто-нибудь подскажет решение в стиле Java.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758421
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Рефлексия - часть Java. Значит все, что можно сделать через рефлексию - можно сделать на Java.
Сделают это в виде синтаксического сахара или нет уже не столь важно.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758430
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевРефлексия - часть Java. Значит все, что можно сделать через рефлексию - можно сделать на Java.
Сделают это в виде синтаксического сахара или нет уже не столь важно.
JVM часть Java. Значит всё что есть в Scalа, которая работает на JVM, есть и в Java. Автор спрашивает о языке, а не платформе. Что ты такой упертый в пятницу-то?
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758436
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_но так, чтобы все три метода Test() выполняли разные действия.
IMHO это действо ни для чего полезного, кроме обфускации кода не нужно. Только грабли раскладывает.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758437
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Сергей АрсеньевТолько вот зачем это все?Пример номер раз
Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод.

Просто передаёшь (или заранее создаёшь в переменной) new Runnable(){run(){run1()} - как-то так.


_Vasilisk_Ответ на вопрос - я получил. Спасибо большое. Вопрос был чисто теоретическим. Просто я пришел в джаву из делфи, а там такие вещи возможны. Вот решил уточнить как здесь

В delphi интерйфейсы другие- там это отдельная сущность из мира винды и преобразование между интерфейсами одного класса это интересная операция. В java решается анонимными классами.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758440
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

JVM это не часть JAVA это способ его (языка программирования) реализации (стандартный).
То что топором можно рубить дрова, а можно бриться не значит, что волосы - дрова.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758455
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Есть класс со своим методом Run. А мне нужно реализовать интерфейс Runnable для потока, но для функции потока дергать другой метод.

Авторы Java -принципиальные противники множественного наследования.

Так что только через прокси.

Т.е прокси класс реализует Runnable.
По всем методам кроме run (и другие какие надо переопределить) дергает внутренний класс.
И содержит метод возвращающий оригинальный класс, для использования теми, кому нужен оригинальный.

В идеале у оригинального класса надо бы определить метод getAsNotRunnable() - который возвращает this, а у прокси внутренний.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758460
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев JVM это не часть JAVA это способ его (языка программирования) реализации (стандартный).

Спецификация Java включает в себя JLS и JVM спецификации. Так что не надо продолжать пороть ерунду.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758478
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСпецификация Java включает в себя JLS и JVM спецификации. Так что не надо продолжать пороть ерунду.
Смотрю сюда и вижу, что это разные строчки. ЧЯДНТ?
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758488
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Смотрю сюда и вижу, что это разные строчки. ЧЯДНТ?
И обе находятся в секции Java SE Specifications. Нет Java без JVM.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38758513
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczАвтор спрашивает о языке, а не платформе. Что ты такой упертый в пятницу-то?
не выспался.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759154
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевJVM это не часть JAVAЕсли вы о JLS, то это - правдаэто способ его (языка программирования) реализации (стандартный)А это - нет.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759160
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, данный кейс решается не наследованием а композицией.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759168
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА это - нет.
Т.е. на jvm нельзя выполнить программу, написанную на языке программирования Java, или это не стандартный вариант?
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759173
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевТ.е. на jvm нельзя выполнить программу, написанную на языке программирования Java, или это не стандартный вариант?Ни то и ни другое.
JVM исполняет байт-код. Она накладывает определённые ограничения на структуру этого кода, но ей глубоко фиолетово, откуда этот код берётся.
JVM не зависит ни от JLS ни от Java SE/EE API. Ортогональные базисы
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759180
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovJVM не зависит ни от JLS ни от Java SE/EE API. Ортогональные базисы
То что на пилу можно использовать как музыкальный инструмент не означает, что она не является стандартным инструментом для распила бревен.
В таком варианте мой посыл более понятен?

P.S. Хотя с рефлексией я был не прав - это не возможность языка, а его стандартной библиотеки. :)
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759184
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для термина Java существует некий дуализм смыслов. Его иногда называют языком. Иногда - машиной.
Тоесть машину могуть называть JVM а иногда и Java. Вобщем понимание зависит от контекста.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759206
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевВ таком варианте мой посыл более понятен?Нет, поскольку речь не шла о музыке и распиле брёвен, а только о распиле брёвен.
...
Рейтинг: 0 / 0
Реализация интерфейсов
    #38759207
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Распил брёвен - оффтопик. Давайте вернёмся к вопросу.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Реализация интерфейсов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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