Java enum y clase enum (con ejemplos)

En este tutorial, aprenderemos sobre las enumeraciones en Java. Aprenderemos a crear y usar enumeraciones y clases de enumeración con la ayuda de ejemplos.

En Java, una enumeración (abreviatura de enumeración) es un tipo que tiene un conjunto fijo de valores constantes. Usamos la enumpalabra clave para declarar enumeraciones. Por ejemplo,

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )

Aquí, hemos creado una enumeración llamada Size. Contiene valores fijos PEQUEÑO, MEDIO, GRANDE y EXTRALARGO.

Estos valores dentro de las llaves se denominan constantes (valores) de enumeración.

Nota: Las constantes de enumeración generalmente se representan en mayúsculas.

Ejemplo 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); ) )

Salida

 PEQUEÑO MEDIANO

Como podemos ver en el ejemplo anterior, usamos el nombre de enumeración para acceder a los valores constantes.

Además, podemos crear variables de tipos de enumeración. Por ejemplo,

 Size pizzaSize;

Aquí, pizzaSize es una variable del tipo Size. Solo se puede asignar con 4 valores.

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

Ejemplo 2: Java Enum con la instrucción 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(); ) )

Salida

 Pedí una pizza de tamaño mediano.

En el programa anterior, hemos creado un tamaño de tipo de enumeración. Luego declaramos una variable pizzaSize del tipo Size.

Aquí, la variable pizzaSize solo se puede asignar con 4 valores (PEQUEÑO, MEDIO, GRANDE, EXTRALARGO).

Note la declaración,

 Test t1 = new Test(Size.MEDIUM);

Llamará al Test()constructor dentro de la clase Test. Ahora, a la variable pizzaSize se le asigna la constante MEDIUM.

Según el valor, se ejecuta uno de los casos de la sentencia switch case.

Clase Enum en Java

En Java, los tipos de enumeración se consideran un tipo especial de clase. Se introdujo con el lanzamiento de Java 5.

Una clase enum puede incluir métodos y campos como clases normales.

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

Cuando creamos una clase de enumeración, el compilador creará instancias (objetos) de cada constante de enumeración. Además, toda la constante de enumeración es siempre public static finalpredeterminada.

Ejemplo 3: Clase Java Enum

 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()); ) )

Salida

 El tamaño de la pizza es pequeño.

En el ejemplo anterior, hemos creado una clase de enumeración Size. Tiene cuatro constantes PEQUEÑO, MEDIO, GRANDE y EXTRALARGO.

Dado que Size es una clase de enumeración, el compilador crea automáticamente instancias para cada constante de enumeración.

Aquí, dentro del main()método, hemos utilizado la instancia SMALL para llamar al getSize()método.

Nota : como las clases regulares, una clase enum también puede incluir constructores. Para obtener más información al respecto, visite Java enum constructor.

Métodos de la clase Enum de Java

Hay algunos métodos predefinidos en las clases de enumeración que están disponibles para su uso.

1. Java Enum ordinal ()

El ordinal()método devuelve la posición de una constante de enumeración. Por ejemplo,

 ordinal(SMALL) // returns 0

2. Enum compareTo ()

El compareTo()método compara las constantes de enumeración según su valor ordinal. Por ejemplo,

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

3. Enumerar toString ()

El toString()método devuelve la representación de cadena de las constantes de enumeración. Por ejemplo,

 SMALL.toString() // returns "SMALL"

4. Nombre de enumeración ()

El name()método devuelve el nombre definido de una constante de enumeración en forma de cadena. El valor devuelto por el name()método es final. Por ejemplo,

 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;

Aquí, se garantiza que la variable contendrá uno de los cuatro valores. Ahora, si intentamos pasar valores distintos a esos cuatro valores, el compilador generará un error.

Articulos interesantes...