2012-03-21 16 views
20

Esta es probablemente una pregunta estúpida, pero estoy usando el método enum.valueOf(String name). No hay problema allí, excepto que cuando estaba revisando el javadoc para obtener más información sobre este método, no pude encontrarlo. Hay javadoc para valueOf(Class<T> enumType, String name) pero ninguno para enum.valueOf(String name) (lo que sugeriría que un método con esta firma no existe, pero claramente lo hace).enum.valueOf (String name) falta en Javadoc 1.5 y 1.6

¿Falta algo aquí o es un dominio del API de javadoc?

Gracias

Respuesta

19

no existe ningún método Enum.valueOf (String) Sin embargo, cada enum tiene un método values() y valueOf(String) generado por el compilador y estos están documentados. Son métodos estáticos y, por lo tanto, no se pueden anular ni definir en una superclase o interfaz.

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

Es el mismo en Java 5,0, 6 o 7.

Para Java 5,0 http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.9 (búsqueda de valores) Para Java 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2 proporcionada por @kapep

+1

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

+1

@kapep Gracias por la referencia. No pude encontrar uno para Java 5.0 –

+3

BTW - cuando escribí enum.valueOf (String name), estaba usando "enum" como un acceso directo para una enumeración real. En este caso concreto, la enumeración fue la clase SourceMedia (de un ejercicio en "Harnessing Hibernate.") Todavía me parece extraño que este método no aparezca en el javadoc de Enum. –