# Enum in Java: come creare costanti nel tuo codice

Enum in Java ti permette di creare variabili con valori definiti. Queste variabili vengono scritte in lettere maiuscole e non possono essere modificate successivamente. Il loro scopo è migliorare la logica e la leggibilità del tuo codice e contribuiscono quindi al [Clean Code](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/clean-code-vantaggi-principi-ed-esempi/).

## Che cosa contraddistingue enum in Java?

In Java, il termine “enum” indica un [tipo di dati](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tipi-di-dati-in-java/) utilizzabile all’interno di una classe convenzionale, ma che si distingue da essa soprattutto per un aspetto. Enum è infatti un genere di variabile che dispone di **opzioni per i valori internamente definite, fissate e quindi limitate**. Questa classe comprende quindi costanti che impediscono di utilizzare valori indesiderati all’interno del codice. Questa funzionalità garantisce la struttura logica del codice e aumenta la sua leggibilità. Il termine “enum” è in pratica l’abbreviazione della parola “enumerazione”.

## La sintassi di enum in Java

La struttura della sintassi di enum in Java è sempre identica e si presenta così:

```java
enum Nome_della_classe {
	VALORE1,
	VALORE2,
	VALORE3
}
```

Per definire questa classe devi iniziare quindi con la parola chiave “enum”, da utilizzare al posto di “class” o “interface”. Successivamente devi assegnare un nome alla classe speciale e indicare fra parentesi graffe le costanti consentite che desideri utilizzare. Le costanti vanno **scritte sempre in lettere maiuscole** e separate da virgole.

## Esempio di classe speciale

Un possibile esempio di enum in Java è un elenco dei mesi. L’elenco contiene solo dodici valori possibili, che puoi creare come costanti. Se in futuro ti servirà una variabile del tipo “Mesi”, potrai utilizzare esclusivamente le costanti definite. Il codice per questo esempio si presenta nel modo seguente:

```java
enum Mesi {
	GENNAIO,
	FEBBRAIO,
	MARZO,
	APRILE,
	MAGGIO,
	GIUGNO,
	LUGLIO,
	AGOSTO,
	SETTEMBRE,
	OTTOBRE,
	NOVEMBRE,
	DICEMBRE
}
```

A questo punto, per dichiarare una variabile del tipo “Mesi” devi assegnarle un valore e utilizzare il [comando Java](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/comandi-java/) `System.out.println` per visualizzarla. Il codice si presenta così:

```java
public class Main {
	public static void main(String[] args) {
Mesi mese = Mesi.APRILE;
System.out.println(monat);
	}
}
```

## Enum in Java all’interno di una classe

È possibile utilizzare enum in Java anche all’interno di una classe. Per il nostro esempio precedente il codice si presenterebbe così:

```java
public class Main {
	enum Mesi {
	GENNAIO,
	FEBBRAIO,
	MARZO,
	APRILE,
	MAGGIO,
	GIUGNO,
	LUGLIO,
	AGOSTO,
	SETTEMBRE,
	OTTOBRE,
	NOVEMBRE,
	DICEMBRE
}
		public static void main(String[] args) {
Mesi mese = Mesi.APRILE;
System.out.println(monat);
		}
}
```

## Il metodo values per l’interrogazione di tutte le costanti

Se desideri visualizzare tutti i valori disponibili, il metodo `values()` fa al caso tuo. Le costanti sono visualizzate sotto forma di array. Nel nostro esempio il codice sarebbe:

```java
enum Mesi {
	GENNAIO,
	FEBBRAIO,
	MARZO,
	APRILE,
	MAGGIO,
	GIUGNO,
	LUGLIO,
	AGOSTO,
	SETTEMBRE,
	OTTOBRE,
	NOVEMBRE,
	DICEMBRE
}
public class Main {
	public static void main(String[] args) {
for (Mesi mese : Mesi.values()) {
System.out.println(monat);
		}
	}
}
```

## Enum in Java con switch

È possibile combinare enum in Java anche con altri metodi. Un esempio di combinazione con `switch()` si presenterebbe così:

```java
enum Mesi {
    GENNAIO,
    FEBBRAIO,
    MARZO,
    APRILE,
    MAGGIO,
    GIUGNO,
    LUGLIO,
    AGOSTO,
    SETTEMBRE,
    OTTOBRE,
    NOVEMBRE,
    DICEMBRE
}
public class Main {
    public static void main(String[] args) {
    	Mesi mese = Mesi.APRILE;
switch (mese) {
case APRILE:
System.out.println("La piscina esterna è chiusa.");
break;
case MAGGIO:
System.out.println("La piscina esterna è chiusa.");
break;
case GIUGNO:
System.out.println("La piscina esterna è a vostra disposizione!");
break;
// Ora puoi sperimentare questo metodo per tutti i mesi.
    	}
    }
}
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/enum-in-java/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/enum-in-java/) for AI/LLM consumption.