有没有一种有效的方法可以使被重写方法的相关接口透明化

时间:2019-02-07 09:32:10

标签: java interface

我有一个实现多个接口的类。通过接口,我在代码中有许多覆盖各种方法的方法,这些方法源自各种接口:

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 :(得分:2)

您可以在源接口中编写方法注释,并使用@inheritDoc注释在实现类中继承这些注释,例如:

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

}

Here是文档,它是这样说的:

  

从“最近”可继承类继承(复制)文档   或该标签的当前文档注释中的可实现接口   位置。这样,您就可以在更高的位置撰写更一般的评论   继承树,并在复制的文本周围写上文字。

答案 1 :(得分:1)

不可能在Java代码中使其显式。例如,将此与C#进行对比:

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

请注意,在上面的C#代码中,有两个名称相同但覆盖不同接口的方法。在Java中这是不可能的。如果两个实现的接口具有相同的方法,则Java中只能有一个方法,该方法可以一次覆盖两个接口的方法。因此,实际上不可能在代码中说出某个方法覆盖哪个接口。它会覆盖所有接口中相同名称的所有方法。

但是,您可以添加评论。另外,如果添加Javadoc注释,则生成的文档将自动显示“由yyyy接口中的xxx方法指定”。

答案 2 :(得分:1)

只需生成javadoc

  

如果给定类中的方法m()在接口中实现了方法,   Javadoc工具将在   m()的文档,并带有要实现的方法的链接。

示例:https://docs.oracle.com/javase/7/docs/api/java/lang/Short.html#compareTo(java.lang.Short)

答案 3 :(得分:1)

据我所知,没有“干净”的方法。我一直在使用首选的IDE自动生成这些方法。我将继续从IF1生成所有方法,然后从IF2生成所有方法,依此类推。 您也可以使用方法名称来玩。 也许称他们像 IF1Method1,IF1Method2,IF2Method1 ... 等等。