覆盖 javadoc 注释 java.lang.Enum.values()



我对java.lang.Enum.values()方法有一个非常具体的问题。

我想覆盖它的javadoc。非常准确地说,当前的javadoc是在我创建自己的枚举之后:

public static MyClass.MyEnum[] values()
  ... 
  This method may be used to iterate over the constants as follows:
    for (MyClass.MyEnum c : MyClass.MyEnum.values())
    System.out.println(c);
  Returns:
    ...

但是在我的公司System.out电话被认为是不好的做法,所以我希望它不会被显示出来。我的第一次尝试是覆盖values()但这显然是不可能的。还有其他方法可以做到这一点吗?还是更新生成的文档的唯一可能性?

我也很好奇为什么values()是不可覆盖的。我读到其他问题"它是由编译器生成的"。但是有人能更精确吗?它似乎是从枚举的名称生成的,但它没有解释原因。

values是一个

静态方法,不受重写。您不能提供自己的方法来替换生成的方法,这是按规范的。

没有标准的机制来替换一个你无法控制其源代码的方法的Javadoc,但你可能会弄乱构建工具,或者,如果一切都失败了,最终的Javadoc HTML。

我认为这

是不可能的,但是如果您愿意,您可以提交JDK问题并可能提供OpenJDK修复程序。

来自 Oracle Java 教程:

枚举声明定义一个类(称为枚举类型)。枚举类主体可以包含方法和其他字段。编译器在创建枚举时会自动添加一些特殊方法。例如,它们有一个静态值方法,该方法返回一个数组,其中包含枚举的所有值,按声明顺序排列。

因此,方法值不能重写,因为它是由编译器创建的特殊方法。当您尝试这样做时,Eclipse IDE 会生成此错误:

枚举(你的枚举)已经隐式定义了方法值()

最新更新