In Java, è possibile creare un enum come segue:In che modo values () è implementato per le enumerazioni di Java 6?
public enum Letter {
A, B, C, D, E, F, G;
static {
for(Letter letter : values()) {
// do something with letter
}
}
}
Tale questione riguarda il metodo dei ") (valori". In particolare, come viene implementato? Di solito, potrei passare al sorgente per le classi Java usando F3 o CTRL + Fare clic su Eclipse (anche per classi come String, Character, Integer e anche Enum). È possibile visualizzare l'origine degli altri metodi enum (ad es. ValueOf (String)).
Does "values ()" crea un nuovo array ogni volta che viene richiamato? Se lo assegno ad una variabile locale e poi modifico uno degli elementi, cosa succede (chiaramente questo non influenzerà il valore restituito da values (), il che implica che ogni volta viene assegnato un nuovo array).
Il codice è nativo? Oppure la JVM/compilatore lo tratta in modo speciale, restituendo solo una nuova istanza da values () quando non può dimostrare che non verrà modificata.
Non sarebbe un System.arraycopy essere più veloce? – Gandalf
+1; complimenti extra se spiegherai il significato di 'sintetico'. – wchargin
Perché 'values ()' metodo 'clone()' l'array '$ VALUES'? Perché non restituirlo direttamente? – RestInPeace