Java enum & enum Class (con esempi)

In questo tutorial, impareremo a conoscere le enumerazioni in Java. Impareremo a creare e utilizzare enumerazioni e classi di enumerazione con l'aiuto di esempi.

In Java, un enum (abbreviazione di enumeration) è un tipo che ha un insieme fisso di valori costanti. Usiamo la enumparola chiave per dichiarare enumerazioni. Per esempio,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Qui abbiamo creato un'enumerazione denominata Size. Contiene valori fissi SMALL, MEDIUM, LARGE ed EXTRALARGE.

Questi valori all'interno delle parentesi graffe sono chiamati costanti enum (valori).

Nota: le costanti enum sono generalmente rappresentate in maiuscolo.

Esempio 1: Java Enum

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )

Produzione

 PICCOLO MEDIO

Come possiamo vedere dall'esempio sopra, usiamo il nome enum per accedere ai valori costanti.

Inoltre, possiamo creare variabili di tipi enum. Per esempio,

 Size pizzaSize;

In questo caso pizzaSize è una variabile del tipo Size. Può essere assegnato solo con 4 valori.

 pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;

Esempio 2: Java Enum con l'istruzione switch

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )

Produzione

 Ho ordinato una pizza di medie dimensioni.

Nel programma precedente, abbiamo creato un tipo di enumerazione Size. Abbiamo quindi dichiarato una variabile pizzaSize del tipo Size.

Qui alla variabile pizzaSize possono essere assegnati solo 4 valori (SMALL, MEDIUM, LARGE, EXTRALARGE).

Notare la dichiarazione,

 Test t1 = new Test(Size.MEDIUM);

Chiamerà il Test()costruttore all'interno della classe Test. Alla variabile pizzaSize viene ora assegnata la costante MEDIUM.

In base al valore, viene eseguito uno dei casi dell'istruzione switch case.

Classe Enum in Java

In Java, i tipi enum sono considerati un tipo speciale di classe. È stato introdotto con il rilascio di Java 5.

Una classe enum può includere metodi e campi proprio come le classi normali.

 enum Size ( constant1, constant2,… , constantN; // methods and fields )

Quando creiamo una classe enum, il compilatore creerà istanze (oggetti) di ogni costante enum. Inoltre, tutte le costanti enum sono sempre public static finalper impostazione predefinita.

Esempio 3: Java Enum Class

 enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )

Produzione

 La dimensione della pizza è piccola

Nell'esempio sopra, abbiamo creato una classe enum Size. Ha quattro costanti SMALL, MEDIUM, LARGE ed EXTRALARGE.

Poiché Size è una classe enum, il compilatore crea automaticamente istanze per ogni costanti enum.

Qui all'interno del main()metodo, abbiamo utilizzato l'istanza SMALL per chiamare il getSize()metodo.

Nota : come le classi normali, anche una classe enum può includere costruttori. Per saperne di più, visita Java enum constructor.

Metodi di Java Enum Class

Ci sono alcuni metodi predefiniti nelle classi enum che sono prontamente disponibili per l'uso.

1. Java Enum ordinal ()

Il ordinal()metodo restituisce la posizione di una costante enum. Per esempio,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

Il compareTo()metodo confronta le costanti enum in base al loro valore ordinale. Per esempio,

 Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)

3. Enum toString ()

Il toString()metodo restituisce la rappresentazione di stringa delle costanti enum. Per esempio,

 SMALL.toString() // returns "SMALL"

4. Enum name ()

Il name()metodo restituisce il nome definito di una costante enum sotto forma di stringa. Il valore restituito dal name()metodo è final. Per esempio,

 name(SMALL) // returns "SMALL"

5. Java Enum valueOf ()

The valueOf() method takes a string and returns an enum constant having the same string name. For example,

 Size.valueOf("SMALL") // returns constant SMALL.

6. Enum values()

The values() method returns an array of enum type containing all the enum constants. For example,

 Size() enumArray = Size.value();

Why Java Enums?

In Java, enum was introduced to replace the use of int constants.

Suppose we have used a collection of int constants.

 class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )

Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.

So, instead of using int constants, we can simply use enums. For example,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

This makes our code more intuitive.

Also, enum provides compile-time type safety.

If we declare a variable of the Size type. For example,

 Size size;

Qui, è garantito che la variabile conterrà uno dei quattro valori. Ora, se proviamo a passare valori diversi da questi quattro valori, il compilatore genererà un errore.

Articoli interessanti...