Tracce
/
Java
Java
/
Programma
/
Enumerazioni
En

Enumerazioni in Java

12 esercizi

Informazioni su Enumerazioni

Un tipo enum è un tipo di dato speciale che consente a una variabile di assumere un insieme di costanti predefinite. La variabile deve essere uguale a uno dei valori che sono stati predefiniti per quel tipo. Esempi comuni sono i punti cardinali (i valori NORTH, SOUTH, EAST e WEST) e i giorni della settimana.

Poiché sono costanti, i nomi dei campi di un tipo enum si scrivono in lettere maiuscole.

Definire un tipo enum

Nel linguaggio di programmazione Java, un tipo enum si definisce usando la parola chiave enum. Per esempio, un tipo enum per i giorni della settimana si specifica così:

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Dovresti usare i tipi enum ogni volta che ti serve rappresentare un insieme fisso di costanti. Questo vale per i tipi enum naturali, come i pianeti del nostro sistema solare, e per gli insiemi di dati in cui conosci tutti i valori possibili già in fase di compilazione: per esempio le voci di un menu, i flag della riga di comando e così via.

Usare un tipo enum

Ecco del codice che mostra come usare il tipo enum DayOfWeek definito sopra:

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Aggiungere metodi e campi

I tipi enum del linguaggio di programmazione Java sono molto più potenti dei loro equivalenti in altri linguaggi. La dichiarazione enum definisce una classe (chiamata tipo enum). Il corpo della classe enum può includere metodi e altri campi:

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

Chiamare il metodo getNumberOfStars su un membro del tipo enum Rating:

Rating.GOOD.getNumberOfStars();
// => 4

Metodi integrati

Il compilatore aggiunge automaticamente alcuni metodi speciali quando crea un enum.

Per esempio, gli enum hanno un metodo statico values che restituisce un array contenente tutti i valori dell'enum nell'ordine in cui sono dichiarati:

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

Il frammento di codice qui sopra stampa quanto segue:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

Il compilatore aggiunge anche un metodo statico valueOf che restituisce un membro dell'enum in base al suo nome:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Enumerazioni