我有一个实现多个接口的类。通过接口,我在代码中有许多覆盖各种方法的方法,这些方法源自各种接口:
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
答案 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 ... 等等。