Tracks
/
Java
Java
/
Temario
/
Enumeraciones
En

Enumeraciones en Java

12 ejercicios

Acerca de Enumeraciones

Un tipo enumerado 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 ese tipo. Algunos ejemplos habituales son los puntos cardinales (valores NORTH, SOUTH, EAST y WEST) y los días de la semana.

Como son constantes, los nombres de los campos de un tipo enumerado se escriben en mayúsculas.

Definir un tipo enumerado

En el lenguaje de programación Java, un tipo enumerado se define usando la palabra clave enum. Por ejemplo, un tipo enumerado con los días de la semana se escribiría así:

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

Conviene usar tipos enumerados siempre que necesites representar un conjunto fijo de constantes. Eso incluye tipos enumerados 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ú, los indicadores de línea de comandos, etc.

Usar un tipo enumerado

Este código muestra cómo usar el tipo enumerado DayOfWeek definido arriba:

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"

Añadir métodos y campos

Los tipos enumerados del lenguaje de programación Java son mucho más potentes que sus equivalentes en otros lenguajes. La declaración enum define una clase (llamada tipo enumerado). 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 enumerado Rating:

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

Métodos integrados

El compilador añade automáticamente algunos métodos especiales cuando crea un tipo enumerado.

Por ejemplo, tienen un método estático values que devuelve un array con todos los valores del tipo enumerado 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 añade un método estático valueOf que devuelve un miembro del tipo enumerado a partir de su nombre:

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

Aprende Enumeraciones