这可能是一个愚蠢的问题,但我正在使用方法enum.valueOf(String name)
。没问题,除了当我检查javadoc以了解更多有关此方法的信息时,我找不到它。 valueOf(Class<T> enumType, String name)
有javadoc,enum.valueOf(String name)
没有javadoc(这表明不存在带有此签名的方法 - 但显然确实如此)。
我在这里遗漏了什么,或者这是对API的javadoc的疏忽?
由于
答案 0 :(得分:19)
没有方法Enum.valueOf(String)但是,每个enum
都有一个由编译器生成的values()
和valueOf(String)
方法,并且这些方法都有记录。它们是静态方法,因此不能在超类或接口中重写或定义。
Enum e = Enum.valueOf(""); // this doesn't compile
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(搜索值) 对于@kapep提供的Java 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2
答案 1 :(得分:9)
幕后,enum.valueOf(String name)
实际上正在调用Enum.valueOf(Class<T> enumType, String name)