Есть ли эффективный способ сделать прозрачным связанный интерфейс переопределенного метода - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть класс, реализующий несколько интерфейсов.Через интерфейсы у меня есть много переопределенных методов в коде, происходящем из различных интерфейсов:

public class myClass implementing IF1, IF2, IF3, .... () {
....
@Override
method1 () { ...} <-- from IF2
method2 () { ...} <-- from IF1
method3 () { ...} <-- from IF2
method4 () { ...} <-- from IF2
method5 () { ...} <-- from IF3
method6 () { ...} <-- from IFxy
}

У меня неоднократно возникала проблема, я хочу знать, какому интерфейсу принадлежит переопределенный метод, и переходить к соответствующему интерфейсу.,Есть ли элегантный способ сделать связь метода с интерфейсом видимой / прозрачной?

Всего наилучшего WolfiG

Ответы [ 4 ]

0 голосов
/ 07 февраля 2019

Насколько я знаю, нет "чистого" пути.Что я всегда делаю, так это использую предпочитаемую IDE для автоматической генерации этих методов.Я бы продолжил генерировать все методы из IF1, затем из IF2 и так далее.Также вы можете играть с именами методов.Возможно, называя их чем-то вроде IF1Method1, IF1Method2, IF2Method1 ... и т. Д.

0 голосов
/ 07 февраля 2019

Невозможно сделать это явным в коде Java.Сравните это с C #, например:

class MyClass : Interface1, Interface2 {
    override Interface1.Method1 {...}
    override Interface2.Method1 {...}
}

Обратите внимание, что в приведенном выше коде C # есть два метода с одинаковым именем, но переопределяющие разные интерфейсы.Это невозможно в Java.Если два реализованных интерфейса имеют один и тот же метод, в Java может быть только один метод, который переопределяет метод обоих интерфейсов одновременно.Поэтому на самом деле невозможно сказать в коде, какой интерфейс переопределяет определенный метод.Он переопределяет все методы с одинаковыми именами во всех интерфейсах.

Однако вы можете добавить комментарий.Кроме того, если вы добавите комментарий Javadoc, сгенерированная документация автоматически скажет: «Указано методом xxx в интерфейсе yyyy».

0 голосов
/ 07 февраля 2019

Просто сгенерируйте javadoc :

, если метод m () в данном классе реализует метод в интерфейсе, инструмент Javadoc сгенерирует подзаголовок "Указано"в документации по m () со ссылкой на метод, который он реализует.

Пример: https://docs.oracle.com/javase/7/docs/api/java/lang/Short.html#compareTo(java.lang.Short)

0 голосов
/ 07 февраля 2019

Вы можете написать комментарий метода в исходном интерфейсе и использовать аннотацию @inheritDoc для наследования этого комментария в классе реализации, например:

/**
 * {@inheritDoc}
 */
@Override
public void method1(){

}

Здесь - документация,это то, что говорится:

Наследует (копирует) документацию из "ближайшего" наследуемого класса или реализуемого интерфейса в текущий комментарий документа в расположении этого тега.Это позволяет вам писать более общие комментарии выше дерева наследования и писать вокруг скопированного текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...