Sostieni AppuntiFacili con una piccola donazione su PayPal

Dona con PayPal
AppuntiFacili
Torna Indietro Segnala errore

Enum in Java

✍️ Dennis Turco 🏷️ Informatica 📘 Java
Ultima modifica:
#java#programmazione#enum#tipi#oop

1. Descrizione

Un enum (enumerazione) è un tipo di dato speciale introdotto in Java per rappresentare un insieme limitato e fisso di valori costanti.

In pratica serve quando una variabile può assumere solo alcuni valori predefiniti.

Esempi reali:

  • giorni della settimana
  • mesi dell’anno
  • stati di un ordine
  • livelli di accesso
  • direzioni (NORD, SUD, EST, OVEST)

2. Perché usare enum?

Prima degli enum si usavano spesso:

String stato = "ATTIVO";

oppure:

int stato = 1;

Problemi:

  • errori di scrittura (es. “Ativo”)
  • valori non validi
  • codice poco leggibile
  • difficile manutenzione

Gli enum risolvono questi problemi.

3. Sintassi base

Un enum si dichiara con la parola chiave enum.

enum Giorno {
    LUNEDI,
    MARTEDI,
    MERCOLEDI,
    GIOVEDI,
    VENERDI,
    SABATO,
    DOMENICA
}

Ogni valore è chiamato costante enum.

4. Utilizzare un enum

  1. Dichiarare una variabile enum: Giorno oggi;
  2. Assegnare un valore: oggi = Giorno.LUNEDI;

4.1 Esempio completo

public class Main {

    enum Stato {
        ACCESO,
        SPENTO
    }

    public static void main(String[] args) {
        Stato lampada = Stato.ACCESO;
        System.out.println(lampada); // -> Output: ACCESO
    }
}

5. Enum e controlli condizionali

Gli enum funzionano perfettamente con if e switch.

5.1 Con if

if(lampada == Stato.ACCESO){
    System.out.println("La lampada è accesa");
}

5.2 Con switch (molto usato)

switch(lampada){
    case ACCESO:
        System.out.println("ON");
        break;

    case SPENTO:
        System.out.println("OFF");
        break;
}

Gli enum rendono gli switch molto più chiari.

6. Metodi automatici degli enum

Java fornisce alcuni metodi già pronti.

6.1 values()

Restituisce tutti i valori.

for(Giorno g : Giorno.values()){
    System.out.println(g);
}

6.2 valueOf()

Converte una stringa in enum.

Giorno g = Giorno.valueOf("LUNEDI");

WARNING

Deve essere scritto identico.

6.3 ordinal()

Restituisce la posizione.

System.out.println(Giorno.LUNEDI.ordinal()); // -> Output: 0

7. Enum come vere classi

Molti non sanno che un enum è una classe speciale.

Può avere:

  • attributi
  • costruttori
  • metodi

Per esempio:

enum Livello {

    BASSO(1),
    MEDIO(2),
    ALTO(3);

    private int codice;

    Livello(int codice){
        this.codice = codice;
    }

    public int getCodice(){
        return codice;
    }
}

8. Quando usare enum (Regola pratica)

Usare un enum quando:

  • i valori sono pochi
  • i valori non cambiano
  • rappresentano stati o categorie

Esempi ideali:

  • stato ordine → IN_PREPARAZIONE, SPEDITO
  • ruolo utente → ADMIN, USER
  • difficoltà → FACILE, MEDIO, DIFFICILE

9. Quiz a risposta multipla

Cos'è un enum?

Gli enum possono contenere metodi?

Quale parola chiave crea un enum?

Quale metodo restituisce tutti i valori?

Quando è consigliato usare enum?

10. Esercizi

Esercizi Enum

10.1 Esercizio

Creare un enum Semaforo con:

ROSSO, GIALLO, VERDE

Stampare il comportamento del semaforo.

💡 Mostra soluzione
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;
        }
    }
}

10.2 Esercizio

Creare un enum Ruolo con:

ADMIN, USER, GUEST

Stampare un messaggio diverso per ogni ruolo.

10.3 Esercizio

Creare un enum Livello con un valore numerico associato e stampare il codice del livello scelto.

Prenota una lezione