Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写java.lang.Enum.values()上的Javadoc注释_Java_Enums_Overriding_Javadoc - Fatal编程技术网

重写java.lang.Enum.values()上的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

关于方法.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:
    ...
但是在我公司的
系统中,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也必须更新(修补)。