Java enums – ecco come funziona

Con gli enum (abbreviazione di enumerazione), Java ti offre come programmatore la possibilità di definire costanti predefinite per le tue variabili. Questo è particolarmente utile quando una variabile ha solo un piccolo numero di stati nominabili.

Questo può essere, per esempio, carte da gioco (fiori, picche, cuori, quadri) o il nome del giorno della settimana.

  • Definire un tipo enum
  • Creare una variabile enum
  • Esempio di applicazione

Definire un tipo enum

Definire un enum per i giorni della settimana con la seguente sintassi:

public enum WeekDay

{
LUNEDI', MARTEDI', MERCOLEDI', GIOVEDI', VENERDI', SABATO, DOMENICA
}

WeekDay è l'identificatore dell'enum qui. Questo nome è anche usato in seguito per dichiarare variabili di questo tipo. I giorni della settimana MONDAY, TUESDAY, ... sono i possibili valori che una variabile di tipo WeekDay può assumere. In alternativa, puoi scegliere qualsiasi altro incarico per le tue variabili. Per l'esempio delle carte da gioco sopra, usereste la seguente sintassi:

public enum Cards
{
CLUBS, SPADES, HEARTS, DIAMONDS
}

Creazione di una variabile enum

Così si dichiara una variabile di tipo WeekDay e le si assegna un valore.

WeekDay day = WeekDay.MONDAY;

WeekDay è ora la parola chiave per il tipo enum appena creato.

System.out.println(day);

Quando la variabile viene mostrata alla console in questo modo, la stringa "MONDAY" appare sulla console.

Esempio di applicazione

La variabile day può anche essere confrontata in espressioni logiche. Per esempio, è ora possibile interrogare il giorno della settimana in una costruzione switch:

String message = "";
WeekDay day = WeekDay.FRIDAY;
switch(day)
{
case MONDAY:
case TUESDAY:
case WEDNESDAY:
message = "Cheer up, the week has just begun.";
break;

case THURSDAY:
case FRIDAY:
message = "Presto il fine settimana sarà qui!";
break;

case SATURDAY:
case SUNDAY:
message = "Weekend finalmente!";
}
System.out.println(message);

L'output del codice cambia a seconda dello stato della variabile day.