Javadoc:重复的方法

时间:2017-02-17 11:58:14

标签: java interface javadoc

我遇到以下情况:

interface MyInterface
  {
  void commonMethodA();
  void commonMethodB();
  void specificMethod();
  }

abstract class Base 
  {
  void commonMethodA() {...}
  void commonMethodB() {...}
  }

class Derived1 extends Base implements MyInterface
  {
  void specificMethod() {...}
  }

class Derived2 extends Base implements MyInterface
  {
  void specificMethod() {...}
  }

即。我有一个接口,其中大多数方法对所有实现者都是通用的。因此,恕我直言,上述架构是有道理的,确实有效。

唯一的问题是Javadoc。当它解析Derived {1,2}类时,它得出结论:有两个'commonMethodAs'(和Bs) - 一个在Base类中扩展,另一个在实现的接口中。

有人会有任何建议吗?如何让Javadoc意识到只有一个'commonMethodA'?

编辑:

忘记添加,还有另一个

class Derived3withNoSpecifics extends Base
  {
  (...)
  }

不应该包含specificMethod()。因此,令人遗憾的是,制作Base实现MyInterface不是一种选择......

EDIT2:

另一个提议的解决方案,即将MyInterface拆分为MyInterfaceCommon(据我所知,由Base实现)和MyInterfaceSpecific(由Derived {1,2}实现)也不会起作用,这是因为另一个未提及的约束:):程序中的其他地方我需要能够接受Derived1和Derived2的实例作为方法的参数,我目前正在使用

void theMethod(MyInterface parameter)
   {
   (...)
   }

这个方法实际上是MyInterface接口存在的全部要点。

以下是生成的Javadoc页面的样子:

http://distorted.org/javadoc-library/org/distorted/library/DistortedTexture.html

注意'getHeight()','getWidth()'和'getID()'被重复。您没有看到DistortedTexture派生自的类及其实现的接口,因为它们都是包本地的。

1 个答案:

答案 0 :(得分:1)

您的继承方案与ArrayList的方案基本相同。它实现List并扩展AbstractList。它从接口和抽象类继承equals(),就像使用commonMethodA一样。 ArrayList的javadoc准确显示了你抱怨的内容:重复提及equals,因为它是从两个地方继承的。这就是Javadoc的工作方式。人们已经习惯了。我认为没有必要担心。