Java 1.5 Enum Tutorial

October 17

Java 1.5 Enum Tutorial


Il tipo enum è una nuova funzionalità nel linguaggio Java 1.5.0, progettato per risolvere le debolezze nel modo in cui i valori enumerati sono stati trattati in precedenti versioni di Java. Nella sua forma più semplice, adotta una struttura simile al tipo enum in linguaggi C-based; tuttavia è molto più potente.

L'oggetto Enum

Prima di passare alla enumerazioni se stessi, è meglio per illustrare il problema che il nuovo tipo enum è stato creato per risolvere. Si consideri la seguente classe:

public class Calendario {
int dayOfWeek
ANDARE

int finale public static LUNEDI = 0
ANDARE
int finale public static MARTEDI = 1
ANDARE
int finale public static MERCOLEDI = 2
ANDARE
....

annullare setDayOfWeek (data int) {...}
}

Questa classe memorizza il giorno della settimana utilizzando un set di costanti enumerate con valori interi 0-7, ciascuno corrispondente ad un giorno diverso, e si prevede che altri sviluppatori utilizzano questa classe utilizzerà queste costanti quando si utilizza la classe. Tuttavia, nulla impone questo. Altre classi potrebbero ignorare le costanti, utilizzare le proprie costanti (a partire da Domenica, forse) per sbaglio, o anche, a causa di un bug, passare a \ "8 \" come un giorno della settimana, potenzialmente permettendo un bug di propagarsi ulteriormente di quanto dovrebbe. E 'anche particolarmente uninformative in debug, come il valore della \ "giorno_della_settimana \" verrà stampato sulla console o di un debugger semplicemente come un intero che deve essere cercato nel codice sorgente. Enumerazioni sono stati progettati per affrontare tutti questi problemi. Quello che segue è la stessa classe, utilizzando il tipo enum invece di una serie di costanti enumerate:

public class Calendario {
enum pubblico Giorno {LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA
}
giorno dayOfWeek

setDayOfWeek void (Giorno d) {...}
}

Il codice di cui sopra, oltre ad essere più pulita e più leggibile, risolve tutti i problemi sopra elencati con costanti enumerate. I clienti sono ora costretti a utilizzare solo i valori enumerati stessi, e debugger mostrerà il nome del valore enumerato e non un numero intero. Inoltre, enumerazioni hanno un certo numero di altri vantaggi. Ad esempio, possono essere utilizzati con la nuova funzionalità per-ciascun ciclo che è stata aggiunta in Java 1.5.0. La classe Calendar potrebbe includere metodo come questo:

printDays vuoto () {
per (giorno X: Day.values ​​()) {
System.out.println ( "Oggi è" + d)
ANDARE
}
}

Questo metodo scorrere tutti i giorni e stampare i loro nomi.

Enumerazioni sono classi a tutti gli effetti, il che significa che possono avere i loro 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:

enum pubblico caratteri {
MYSTERIOUS_MAN ( "alto, scuro e bello."),
MYSTERIOUS_WOMAN ( "Indossare un abito rosso."),
PROTAGONISTA ( "Dashing ed eroico."),
ANTAGONISTI ( "Stillicidio il male.");

descrizione String
ANDARE

Character (descrizione String) {
this.description = Descrizione
ANDARE
}
}