猿问

是否有一种有效的方法可以使覆盖方法的相关接口透明

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


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

}

我反复有一个问题,我想知道覆盖的方法属于哪个接口并导航到相应的接口。是否有一种优雅的方法可以使方法与接口的关系可见/透明?


一只甜甜圈
浏览 116回答 4
4回答

慕的地8271018

您可以在源接口中编写方法注释并使用@inheritDoc注释来继承实现类中的这些注释,例如:/**&nbsp;* {@inheritDoc}&nbsp;*/@Overridepublic void method1(){}这是文档,这就是它所说的:从“最近的”可继承类或可实现接口继承(复制)文档到此标记位置的当前文档注释中。这使您可以在继承树的更高位置编写更一般的注释,并围绕复制的文本进行书写。

森林海

不可能在 Java 代码中使其显式化。将此与 C# 进行对比,例如:class MyClass : Interface1, Interface2 {&nbsp; &nbsp; override Interface1.Method1 {...}&nbsp; &nbsp; override Interface2.Method1 {...}}请注意,在上面的 C# 代码中,有两个名称相同但覆盖不同接口的方法。这在 Java 中是不可能的。如果两个实现的接口具有相同的方法,则在 Java 中只能有一个方法同时覆盖两个接口的方法。因此,实际上不可能在代码中说明某个方法覆盖了哪个接口。它覆盖所有接口中的所有同名方法。但是,您可以添加评论。此外,如果您添加 Javadoc 注释,则生成的文档将自动显示“由接口 yyyy 中的方法 xxx 指定”。

蛊毒传说

据我所知,没有“干净”的方式。我一直在做的是使用我喜欢的 IDE 来自动生成这些方法。我将继续从 IF1 生成所有方法,然后从 IF2 生成所有方法,依此类推。您也可以使用方法名称。也许称它们为 IF1Method1、IF1Method2、IF2Method1……等等。

MMTTMM

只需生成javadoc:如果给定类中的方法 m() 实现了接口中的方法,Javadoc 工具将在 m() 的文档中生成一个子标题“指定者”,并带有指向它正在实现的方法的链接。示例:https://docs.oracle.com/javase/7/docs/api/java/lang/Short.html#compareTo(java.lang.Short)
随时随地看视频慕课网APP

相关分类

Java
我要回答