2012-03-21 49 views
20

這可能是一個愚蠢的問題,但我使用的方法是enum.valueOf(String name)。沒有問題,除了當我檢查javadoc以瞭解更多關於此方法的信息時,我無法找到它。有valueOf(Class<T> enumType, String name)的javadoc,但沒有enum.valueOf(String name)(這表明具有此簽名的方法不存在 - 但顯然它確實存在)。Javadoc 1.5和1.6缺少enum.valueOf(String name)

我在這裏錯過了什麼,或者這是在API的javadoc中的疏忽?

由於

回答

19

沒有方法Enum.valueOf(字符串)然而,每一個具有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(搜索值) 對於Java 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2由@kapep提供

+1

http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2 – Kapep 2012-03-21 11:59:19

+1

@kapep感謝您的參考。我無法找到一個Java 5.0 – 2012-03-21 12:00:11

+3

順便說一句 - 當我寫enum.valueOf(字符串名稱)時,我使用「枚舉」作爲實際枚舉的快捷方式。在這個具體的例子中,枚舉類是SourceMedia類(來自「Harnessing Hibernate」中的練習。)對於我來說,這種方法並沒有出現在javadoc中,對於Enum來說,這仍然很奇怪。 – 2012-03-21 18:58:29