Sostieni AppuntiFacili con una piccola donazione su PayPal
Dona con PayPalUn enum (enumerazione) è un tipo di dato speciale introdotto in Java per rappresentare un insieme limitato e fisso di valori costanti.
Si usa quando una variabile può assumere solo alcuni valori predefiniti.
Esempi reali:
Prima degli enum si usavano spesso stringhe o interi:
String stato = "ATTIVO"; // ❌ potrei scrivere "Attivo", "attivo", "Ativo"...
int livello = 2; // ❌ cosa vuol dire 2? non è chiaro
Problemi:
Gli enum risolvono questi problemi — il compilatore controlla che il valore sia valido.
enum NomeEnum {
VALORE1,
VALORE2,
VALORE3
}
enum Giorno {
LUNEDI, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA
}
Ogni valore è chiamato costante enum.
Giorno oggi = Giorno.LUNEDI;
System.out.println(oggi); // -> LUNEDI
public class Main {
enum Stato { ACCESO, SPENTO }
public static void main(String[] args) {
Stato lampada = Stato.ACCESO;
System.out.println(lampada); // -> ACCESO
}
}
Gli enum funzionano perfettamente con if e switch.
if (lampada == Stato.ACCESO) {
System.out.println("La lampada è accesa");
}
enum Stagione { PRIMAVERA, ESTATE, AUTUNNO, INVERNO }
Stagione s = Stagione.ESTATE;
switch (s) {
case PRIMAVERA: System.out.println("Fiori e sole"); break;
case ESTATE: System.out.println("Caldo e vacanze"); break;
case AUTUNNO: System.out.println("Foglie colorate"); break;
case INVERNO: System.out.println("Neve e freddo"); break;
}
for (Giorno g : Giorno.values()) {
System.out.println(g);
}
Giorno g = Giorno.valueOf("LUNEDI");
WARNING
Deve essere scritto identico alla costante.
System.out.println(Giorno.LUNEDI.ordinal()); // -> 0
Un enum è una classe speciale: può avere attributi, costruttori e metodi.
enum Livello {
BASSO(1),
MEDIO(2),
ALTO(3);
private final int codice;
Livello(int codice) {
this.codice = codice;
}
public int getCodice() {
return codice;
}
}
enum Pianeta {
MERCURIO(3.303e+23, 2.4397e6),
VENERE (4.869e+24, 6.0518e6),
TERRA (5.976e+24, 6.37814e6),
MARTE (6.421e+23, 3.3972e6);
private final double massa;
private final double raggio;
Pianeta(double massa, double raggio) {
this.massa = massa;
this.raggio = raggio;
}
public double getMassa() { return massa; }
public double getRaggio() { return raggio; }
}
public class Main {
public static void main(String[] args) {
for (Pianeta p : Pianeta.values()) {
System.out.println(p + " → massa: " + p.getMassa());
}
}
}
Usare un enum quando:
Esempi ideali:
Cos'è un enum?
Quale parola chiave crea un enum?
Gli enum possono contenere attributi e metodi?
Quale metodo restituisce tutti i valori di un enum?
Quando è consigliato usare enum?
Crea un enum Semaforo con ROSSO, GIALLO, VERDE e stampa il comportamento con switch.
enum Semaforo { ROSSO, GIALLO, VERDE }
public class Main {
public static void main(String[] args) {
Semaforo s = Semaforo.ROSSO;
switch (s) {
case ROSSO: System.out.println("STOP"); break;
case GIALLO: System.out.println("ATTENZIONE"); break;
case VERDE: System.out.println("VAI"); break;
}
}
}Crea un enum Taglia con S, M, L, XL. Associa a ciascuno un valore numerico (S=36, M=38, L=40, XL=42) e stampali tutti.
enum Taglia {
S(36), M(38), L(40), XL(42);
private final int misura;
Taglia(int misura) { this.misura = misura; }
public int getMisura() { return misura; }
}
public class Main {
public static void main(String[] args) {
for (Taglia t : Taglia.values()) {
System.out.println(t + " → " + t.getMisura());
}
}
}Creare un enum Ruolo con ADMIN, USER, GUEST e stampare un messaggio diverso per ogni ruolo.