Tracks
/
Java
Java
/
Temario
/
Enumeraciones
En

Enumeraciones en Java

12 ejercicios

Acerca de Enumeraciones

Un tipo de enumeración es un tipo de dato especial que permite que una variable sea un conjunto de constantes predefinidas. La variable debe ser igual a uno de los valores predefinidos para ella. Entre los ejemplos comunes se incluyen las direcciones de la brújula (valores NORTH, SOUTH, EAST y WEST) y los días de la semana.

Como son constantes, los nombres de los campos de un tipo de enumeración se escriben en letras mayúsculas.

Definir un tipo de enumeración

En el lenguaje de programación Java, defines un tipo de enumeración usando la palabra clave enum. Por ejemplo, especificarías un tipo de enumeración para los días de la semana así:

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

Deberías usar tipos de enumeración cada vez que necesites representar un conjunto fijo de constantes. Eso incluye tipos de enumeración naturales, como los planetas de nuestro sistema solar, y conjuntos de datos en los que conoces todos los valores posibles en tiempo de compilación; por ejemplo, las opciones de un menú, las opciones de línea de comandos, y así sucesivamente.

Usar un tipo de enumeración

Aquí tienes un código que te muestra cómo usar el enum DayOfWeek definido antes:

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"

Agregar métodos y campos

Los tipos de enumeración del lenguaje de programación Java son mucho más poderosos que sus equivalentes en otros lenguajes. La declaración enum define una clase (llamada tipo de enumeración). El cuerpo de la clase enum puede incluir métodos y otros campos:

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;
    }
}

Llamar al método getNumberOfStars en un miembro del tipo de enumeración Rating:

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

Métodos integrados

El compilador agrega automáticamente algunos métodos especiales cuando crea un enum.

Por ejemplo, tienen un método estático values que devuelve un array que contiene todos los valores del enum en el orden en que se declaran:

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

El fragmento anterior imprimiría lo siguiente:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

El compilador también agrega un método estático valueOf que devuelve un miembro del enum a partir de su nombre:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Enumeraciones