Declaro una enumeración como:
enum Sex {MALE,FEMALE};
Y luego, itere enum como se muestra a continuación:
for(Sex v : Sex.values()){
System.out.println(" values :"+ v);
}
¿Comprobé la API de Java pero no puedo encontrar el método de valores ()? Tengo curiosidad por saber de dónde viene este método.
Enlace API: https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html
El método está implícitamente definido (es decir, generado por el compilador).
De la JLS :
fuente
Added by the compiler
significa que no hay .java para este código o que el compilador genera el código? Verifiqué el código fuente de OpenJDK de Enum y no hay ningunovalues()
Ejecuta esto
ya verás
Todos estos son métodos públicos que tiene la clase de "sexo". No están en el código fuente, javac.exe los agregó
Notas:
nunca use sexo como nombre de clase, es difícil leer su código, usamos Sex in Java
cuando me enfrento a un rompecabezas de Java como este, recomiendo usar una herramienta de descompilación de bytecode (uso el complemento Eclispe del esquema de bytecode de Andrey Loskutov). Esto mostrará todo lo que hay dentro de una clase.
fuente