扩展泛型类时使用Javadoc和非泛型类

6
假设我有两个类:
abstract class GenericA<E> {
    public void go(E e) {...}
}

public class IntegerA extends GenericA<Integer> {
}

请注意:GenericA是包私有且泛型的,IntegerA是公共的且不是泛型的。
现在,当我生成公共Javadoc(使用Eclipse)时,在IntegerA方法部分中会看到以下内容:
public void go(E e)

问题在于阅读该Javadoc的读者不知道E是什么;即E代表着Integer。我宁愿Javadoc写成:

public void go(Integer e)

有没有一种方法可以使Javadoc按照我想要的方式运行?

你的javadoc中说超类是什么?我在自己的机器上尝试了一下,遇到了和你一样的问题,但它还错误地说超类是“Object”。 - Dunes
它还告诉我超类是Object。但由于我将GenericA声明为包私有而不是公共的,所以我的观点是这是正确的行为。当我将GenericA声明为公共时,Javadoc会说IntegerA的超类型是GenericA<Integer> - Blaine
1
啊,我明白问题了。实际上不存在带有 go(Integer e) 签名的方法(这可以通过反射来显示)。因此,如果 javadoc 指定了该方法签名,则会是虚假的,即使编译器坚持使用该签名,但运行时不会坚持使用该签名...棘手...不过我看到你已经得到了你需要的答案。 - Dunes
1个回答

3

我知道的唯一方法是在 IntegerA 中覆盖方法,使用Integer并调用超级方法。

 @Override
 public void go(Integer e) {
    super.go(e);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接