Prima di passare a enumerazioni se stessi , è meglio per illustrare il problema che il nuovo tipo enum è stato creato per risolvere . Si consideri la seguente classe :
classe Calendar pubblico {
int dayOfWeek
GO
public int static final LUNEDI = 0
GO
public static final int MARTEDI = 1
GO
public static final int MERCOLEDI = 2
GO
....
vuoto setDayOfWeek ( int data) { ... } }
Questa classe memorizza il giorno della settimana, utilizzando una serie di costanti enumerate con valori interi di 0-7 , ciascuno corrispondente ad una giornata diversa , e si prevede che altri sviluppatori utilizzano questa classe useranno queste costanti quando si utilizza la classe . Tuttavia, nulla impone questo . Altre classi potevano ignorare le costanti , utilizzare i propri costanti ( a partire da Domenica , forse) per errore , o anche , come risultato di un bug , passare in \\ " 8 \\ " come un giorno della settimana , che permettono a un bug di propagarsi ulteriormente di quanto dovrebbe. E 'anche particolarmente poco esaustivo il debug , come il valore di \\ " dayOfWeek \\ " verrà stampato sulla console oa un debugger semplicemente come un intero che deve essere cercato nel codice sorgente . Enumerazioni sono concepiti per affrontare tutte queste questioni . La seguente è la stessa classe , utilizzando il tipo enum invece di un insieme di costanti enumerate :
classe Calendar pubblico {
public enum Day { LUNEDI , MARTEDI , MERCOLEDI , GIOVEDI , VENERDI , SABATO , DOMENICA
}
Giorno dayOfWeek
vuoto setDayOfWeek ( Giorno d ) { ... } }
Il codice di cui sopra , oltre ad essere più pulito e leggibile , risolve tutti i problemi sopra elencati con costanti enumerate . I clienti sono ora costretti a utilizzare solo i valori enumerati stessi, e debugger mostreranno il nome del valore enumerato e non un numero intero. Inoltre , enum hanno un certo numero di altri vantaggi . Ad esempio, possono essere utilizzati con il nuovo - per ogni caratteristica ciclo che è stato aggiunto in Java 1.5.0 . La classe Calendar potrebbe includere metodo come questo :
printDays void ( ) {
per il ( giorno d : Day.values ( ) ) {
System.out.println ( "Oggi è " + d )
GO
} }
Questo metodo scorrere tutti i giorni e stampare i loro nomi .
enumerazioni sono classi a sé stanti , che significa che possono avere i propri metodi e costruttori . Si consideri il seguente enum , che memorizza i personaggi in un gioco , che permette con una breve descrizione di quel personaggio :
public enum Character {
MYSTERIOUS_MAN ( " Alto, moro e bello . " ) ,
MYSTERIOUS_WOMAN ( " Indossare un abito rosso . " ) ,
PROTAGONISTA ( " Dashing ed eroico . " ) ,
ANTAGONISTA ( " Stillicidio male . ");
String descrizione
GO
caratteri ( String descrizione ) {
this.description = descrizione
GO
} }
Programmazione © www.354353.com