Vengono definiti come le classi mediante la parole riservata "enum"
Valori del tipo enum:
public enum MeseDellAnno{
//COSTANTI ENUMERATIVE
GENNAIO, FEBBRAIO, MARZO, APRILE, MAGGIO, GIUGNO, LUGLIO,
AGOSTO, SETTEMBRE, OTTOBRE, NOVEMBRE, DICEMBRE;
}
L'ordine di dichiarazione è rilevante, determina:
In fase di esecuzione, la JVM crea un oggetto per ogni identificatore indicato e ne memorizza il riferimento nella costante corrispondente
Ogni tipo enumerativo è una classe che estende la classe generica Enum<E extends Enum<E> (java.lang)
public String name()
public int ordinal()
public int compareTo(E o) //è final
public static E[] values() //restituisce l'array contenente le costanti del tipo enumerativo nell'ordine in cui sono dichiarate
public enum MeseDellAnno{
GENNAIO{
public int numeroGiorni(){
return 31;
}
},
FEBBRAIO{
public int numeroGiorni(){
return 28;
}
},
...
public abstract int numeroGiorni();
...
}
Tali metodi devono essere dichiarati (eventualmente astratti) nel tipo enumerativo
E' possibile associare ad ogni oggetto del tipo enumerativo dei campi