2012-03-21 24 views
20

Bu muhtemelen aptalca bir sorudur, ancak enum.valueOf(String name) yöntemini kullanıyorum. Orada sorun yok, javadoc'u bu yöntem hakkında daha fazla bilgi edinmek için kontrol ettiğimde bunu bulamadım. valueOf(Class<T> enumType, String name) için javadoc var, ancak hiçbiri enum.valueOf(String name) için geçerli değil (bu imzası olan bir yöntemin mevcut olmadığı anlamına gelir - ama açıkça öyle).enum.valueOf (Dize adı) Javadoc 1.5 ve 1.6'dan eksik

Burada bir şey eksik mi, yoksa API için javadoc'ta bu bir gözetim mi?

sayesinde

cevap

19

bir yöntem Enum.valueOf (String) Bununla birlikte, her enum derleyici tarafından üretilen bir values() ve valueOf(String) yöntemi vardır ve bu belgelenmiştir bulunmaktadır. Bunlar statik yöntemlerdir ve dolayısıyla bir süper sınıf veya arayüzde geçersiz kılınamaz veya tanımlanamazlar.

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

Its @kapep tarafından sağlanan Java 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2 için Java 5.0 http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.9 (değerler için arama) için Java 5.0, 6 ya da 7

aynı

+1

http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2 – Kapep

+1

@kapep Referans için teşekkür ederiz. Java 5.0 –

+3

BTW için bulamadım - enum.valueOf (String name) yazdığımda, gerçek bir enum için kısayol olarak "enum" kullanıyordum. Bu somut olayda, enum, SourceMedia sınıfıydı ("Hazırda Bekletme Hareketi" başlıklı bir denemeden). Bu yöntemin, Enum için javadoc'ta görünmemesi garip görünüyor. –