Enum in Java

– Indice Tutorial –

Gli Enum in Java definiscono un tipo di dati che può assumere determinato numero di  valori costanti, come ad esempio i semi di una carta da gioco che possono assumere  solo 4 possibili valori.

La sintassi è la seguente:

enum <nomeEnum> { <valore1>, ..., <valoreN> }

Esempio

	public enum Livello {
		  BASSO,
		  MEDIO,
		  ALTO
		}

Per   variabili di tipo enumerativo la sintassi è:  

         <TipoEnum> <variabile> = <TipoEnum>.valore;

Esempio:

Livello tmp = Livello.MEDIO;

Gli enum possono essere usate anche dentro le classi.

Esempio:

public class Prova3 {


	public enum Livello {
		  BASSO,
		  MEDIO,
		  ALTO
		}
	
	public static void main(String[] args) {
		Livello tmp = Livello.MEDIO;
	}

}

Sono spesso utilizzati insieme al costrutto switch.

Esempio:

enum Level {
	LOW, MEDIUM, HIGH
}

public class MyClass {
	public static void main(String[] args) {
	    Level myVar = Level.MEDIUM;

	    switch(myVar) {
	      case LOW:
	        System.out.println("Low level");
	        break;
	      case MEDIUM:
	         System.out.println("Medium level");
	        break;
	      case HIGH:
	        System.out.println("High level");
	        break;
	    }
	  }

Output: Medium Level

E’ possibile prendere tutti i possibili valori di un tipo enum tramite il metodo value (), che restituisce un array di tutte le costanti contenute in quel enum. Questo metodo è utile quando si vogliono scorrere tutte le costanti in esso contenute.

Esempio:

enum Level {
	LOW, MEDIUM, HIGH
}

public class MyClass {
	public static void main(String[] args) {
		for (Level myVar : Level.values()) {
			  System.out.println(myVar);
			}
	  }

}

Output:
LOW
MEDIUM
HIGH

Per prendere il valore, come testo, della costante è sufficiente chiamare il metodo toString().

Esempio

enum Level {
	LOW, MEDIUM, HIGH
}

public class MyClass {
	public static void main(String[] args) {
		String tmp = Level.HIGH.toString();
	  }

}

Per ottenere una istanza di un enum, per un dato valore String, si puo usare il  metodo valueOf ().

Esempio:

enum Level {
	LOW, MEDIUM, HIGH
}

public class MyClass {
	public static void main(String[] args) {
		Level tmp = Level.valueOf("HIGH");
	  }

}

I valori di tipi enum possono anche essere confrontati tra loro. Per il confronto si può usare == o equals indifferentemente, ma == previene l’eccezione di variabile null.

Esempio:

public class MyClass {

	enum genere {
		THRILLER, ROMANTICO, AVVENTUURA
	};

	public void testa(genere g) {

		if (g == genere.AVVENTUURA)
			System.out.println("genere avventura");

		if (g.equals(genere.ROMANTICO))
			System.out.println("genere romantico");

	}

}

Aggiungere dei campi ad un enum java

È possibile aggiungere campi, e metodi, a un enum java. Quindi, ogni enum ha anche questi campi. I valori dei campi devono essere forniti al costruttore dell’enum quando si definiscono le costanti.

Esempio:

enum Semi2 {
	CUORI(true,10), SPADE(false, 12), QUADRI(true, 23), FIO-RI(false,28);
	
    private boolean red;
    private int numeroCarte;
    
    private Semi2(boolean red, int numeroCarte) {
      this.red = red;
      this.numeroCarte = numeroCarte;
    }

    public boolean isRed() {
        return red;
      }

    public int getNumeroCarte()
    {
    	return numeroCarte;
    }
    
}

public class MyClass {
	public static void main(String[] args) {
		Semi2 s2 = Semi2.FIORI;
		System.out.println(s2.isRed());
		System.out.println(s2.getNumeroCarte());
	  }

}

Notare che il costruttore dell’enumm che accetta un booleano e un intero. Il costruttore enum imposta il campo int.

Inoltre ogni variabile di tipo Seme2 avrà anche i metodi isRed() e getNumeroCarte(), definiti anch’essi nell’enum.

Video Lezione Sugli ENUM

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *