重写java.lang.Enum.values()上的Javadoc注释
关于方法.values(),我有一个非常具体的问题 我想覆盖它的javadoc。非常准确地说,在我创建了自己的枚举之后,当前的javadoc是:重写java.lang.Enum.values()上的Javadoc注释,java,enums,overriding,javadoc,Java,Enums,Overriding,Javadoc,关于方法.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()) Sys
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:
...
但是在我公司的系统中,out
呼叫被认为是不好的做法,所以我不希望它被显示出来。我的第一次尝试是重写values()
,但这显然是不可能的。还有别的办法吗?还是更新生成的单据的唯一可能性
我也很好奇为什么
values()
是不可重写的。我读到“它是由编译器生成的”。但有人能更精确些吗?它似乎是从枚举的名称生成的,但它没有解释原因。我认为这是不可能的,但如果您愿意,您可以提交JDK问题,并可能提供OpenJDK修复。值
是一个静态方法,不受重写的约束。您不能提供自己的方法来替换生成的方法,这是由
没有标准的机制来替换不受您控制的源代码的方法的Javadoc,但是您可能会弄乱构建工具,或者,如果所有其他方法都失败,则会弄乱最终的Javadoc HTML。来自:
枚举声明定义了一个类(称为枚举类型)。枚举类主体可以包括方法和其他字段。编译器在创建枚举时会自动添加一些特殊方法。例如,它们有一个静态值方法,该方法返回一个数组,该数组按声明的顺序包含枚举的所有值
因此,方法值不能被重写,因为它是由编译器创建的特殊方法。尝试执行此操作时,Eclipse IDE会生成此错误:
枚举(您的枚举)已隐式定义方法值()
如果你读到关于另一个问题的文章,最好链接到这个问题。也许这个问题也需要澄清,或者其他发现你的问题的人也对这个问题感兴趣。@JoachimSauer谢谢你的报告,我更新了相关问题,说它是由编译器生成的。另一篇帖子只是说你不能覆盖valueOf()/values():仍然不理解你的问题。为什么要重写values()?我要重写values()javadoc。我想为了重写javadoc,我需要重写这个方法,或者至少重写它的声明。但也许我错了,请更新问题或告诉我在这种情况下如何更新。@Vince:我个人认为,最好的办法(从短期和中期来看)是对生成的Javadoc进行后期处理,以包含代码示例中所需的内容。问题标题有误导性(现在已修复)。问题实际上是关于更改方法的Javadoc,而不是它的代码。@JoachimSuer这是一样的,因为在不声明方法的情况下,您将无法提供Javadoc。是的,可能会提交一个问题,告诉他们在示例中使用更多的标准代码,这可能会更好。是的,但我可以想象它的优先级较低,这就是为什么我还建议提供一个修复,如果你想尽快得到它。这不能是OpenJDK修复,因为它是,使它99.9%确定。@MarkoTopolnik True,这似乎是一个规范更改。:-/尽管它是向后兼容的。因此,必须针对JLS而不是JDK提交问题,然后(或两者都提交),JLS也必须更新(修补)。