Tipo enumerativo

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

La classe Enum

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

Constant-specific methods

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