En Java, se puede crear una enumeración de la siguiente manera:¿Cómo se implementa values () para enums de Java 6?
public enum Letter {
A, B, C, D, E, F, G;
static {
for(Letter letter : values()) {
// do something with letter
}
}
}
Esta pregunta se refiere a los "valores) (" método. Específicamente, ¿cómo se implementa? Por lo general, podría saltar a la fuente para las clases de Java usando F3 o CTRL + clic en Eclipse (incluso para clases como Cadena, Carácter, Entero e incluso Enum). Es posible ver el origen de los otros métodos enum (por ejemplo, valueOf (String)).
¿"values ()" crea una nueva matriz cada vez que se invoca? Si lo asigno a una variable local y luego modifico uno de los elementos, ¿qué ocurre? (Claramente esto no afectará el valor devuelto por los valores(), lo que implica que se asigna una nueva matriz cada vez).
¿Es el código nativo? O el compilador/JVM lo trata especialmente, solo devuelve una nueva instancia de values () cuando no puede probar que no se modificará.
¿No sería más rápido un System.arraycopy? – Gandalf
+1; felicitaciones adicionales si explicas el significado de 'sintético'. – wchargin
¿Por qué 'values ()' method 'clone()' the array '$ VALUES'? ¿Por qué no solo devolverlo directamente? – RestInPeace