13. Enumerazioni
Si usano quando si vogliono dichiarare insiemi con cardinalità ridotta.
enum Size = {SMALL, MEDIUM, LARGE, X_LARGE}
Size s = Size.MEDIUM;
Size
è una classe reale: ha esattamente 4 istanze:
- Più di quelle non ne possono essere costruite
- Non c’è bisogno di usare il metodo
equals
, ma si può usare direttamente==
s
può avere come valori onull
o uno di quello elencati nell’enumerazione
È possibile aggiungere ad una classe di tipo enumerazione costruttori, attributi e metodi:
- Permettono di associare informazione alle costanti enumerate
- I costruttori sono invocati quando le costanti sono costruite
- Non è possibile costruire oggetti generici dalle classi di tipo enumerazione
public enum Size{
SMALL("S"), MEDIUM("M"), LARGE("L"), X_LARGE("XL");
private String abbreviation;
private Size(String abbreviation){;
}
private String getAbbreviation(){
return abbreviation;
}
}
Tutte le classi di tipo enumerazione offrono i seguenti metodi:
static Enum valueOf(String name)
: ritorna la costante enumerata della classe data che ha quel nome
String toString()
: ritorna il nome della costante enumerata
Size[] values = Size.values()
: ritorna un array che contiene tutti i valori dell’enumerazione Size.
name()
: ritorna il nome della costante enumerata
ordinal()
: ritorna la posizione (inizia da 0)
Loop nelle enumerazioni
// Ex.
enum Color {RED, WHITE, BLUE};
for (Color c : Color.values()) {...}