javadoc 1.5和1.6中缺少enum.valueOf(String name)

Kim*_*urn 22 java enums javadoc

这可能是一个愚蠢的问题,但我正在使用这种方法enum.valueOf(String name).没问题,除了当我检查javadoc以了解更多有关此方法的信息时,我找不到它.有javadoc valueOf(Class<T> enumType, String name)但没有 enum.valueOf(String name)(这表明不存在具有此签名的方法 - 但显然它确实存在).

我在这里遗漏了什么,或者这是对API的javadoc的疏忽?

谢谢

Pet*_*rey 19

没有方法Enum.valueOf(字符串).然而,每一个enum具有values()valueOf(String)由编译器生成的方法并且这些记录.它们是静态方法,因此不能在超类或接口中重写或定义.

Enum e = Enum.valueOf(""); // this doesn't compile
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.State.html#values%28%29

http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.State.html#values%28%29

在Java 5.0,6或7中也是如此.

对于Java 5.0 http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.9(搜索值)对于Java 7 http://docs.oracle.com/javase/ specs/jls/se7/html/jls-8.html#jls-8.9.2由@kapep提供

  • 顺便说一句 - 当我写enum.valueOf(String name)时,我使用"enum"作为实际枚举的快捷方式.在这个具体案例中,enum是SourceMedia类(来自"Harnessing Hibernate"中的练习.)对于我来说,这个方法并没有出现在Enum的javadoc中,这似乎很奇怪. (3认同)

Boh*_*ian 9

在引擎盖下,enum.valueOf(String name)实际上是在呼唤Enum.valueOf(Class<T> enumType, String name)