Validación de entrada con enums en Java
Clase 21 de 31 • Curso de Java
Contenido del curso
- 10

Atributos y métodos estáticos en clases utilitarias de Java
08:43 - 11

Constantes en Java: inmutabilidad con static final
04:08 - 12

Constructores en Java para inicializar objetos con datos
08:10 - 13

Gestión de memoria en Java: stack, heap y garbage collector
07:04 - 14

Encapsulamiento en Java: Atributos privados y métodos getter y setter
09:26 - 15

Operaciones básicas con listas en Java: agregar, eliminar y recorrer
11:12 - 16

Relaciones entre clases en Java: asociación, agregación y composición
03:45 - 17

Implementación de menús interactivos con while y switch en Java
11:38 - 18

Búsqueda y eliminación de elementos en listas de Java
09:20 quiz de Construcción de clases y modelado de objetos
- 19

Streams y lambdas para filtrar listas en Java
11:55 - 20

Transformación y ordenamiento de listas con streams en Java
11:49 - 21

Validación de entrada con enums en Java
11:56 - 22

Diferencias entre Excepciones Checked y Unchecked en Java
08:16 - 23

Records para simplificar código inmutable en Java
07:00 - 24

Mapas en Java para contar visualizaciones de películas
09:47 - 25

Lectura de archivos planos y conversión a objetos en Java
13:48 - 26

Escritura de archivos planos con la API moderna de Java
09:50 quiz de Estructuras de datos y Java moderno
En el desarrollo de software, controlar los valores que el usuario puede ingresar es clave para evitar errores y tener un código más claro y fácil de mantener. Aquí exploramos cómo los enums en Java permiten establecer listas cerradas de opciones para atributos como "género" de una película.
¿Por qué utilizar enums en Java para atributos como género?
Usar enums evita que los usuarios introduzcan valores al azar. Por ejemplo, si el género es texto libre, podrían escribir cualquier palabra, lo que puede causar problemas. Con un enum, definimos una lista fija de géneros como ACCION, COMEDIA, DRAMA, ANIMADA, TERROR, CIENCIA_FICCION, entre otros. Así, el código se vuelve más seguro y legible, ya que solo se aceptan valores válidos.
¿Cómo se crea un enum en Java?
Para definir un enum se debe crear un archivo nuevo con el tipo enum. Por ejemplo, se puede definir de la siguiente manera:
public enum Genero {
ACCION,
COMEDIA,
DRAMA,
ANIMADA,
TERROR,
CIENCIA_FICCION
}
Es recomendable escribir los nombres de los enums en mayúsculas para distinguirlos fácilmente y mantener buenas prácticas.
¿Cómo se integra el enum en la clase que lo utiliza?
En la clase Película, el atributo género deja de ser una cadena y pasa a ser de tipo Genero. Esto implica que, en el constructor y otros métodos relacionados, se debe actualizar la firma y el uso del atributo:
- Ahora el género se recibe o se asigna como un tipo Genero.
- Al buscar una película por género, el método debe aceptar un Genero y comparar usando el método equals.
¿Cómo se capturan y validan opciones de enums cuando el usuario ingresa datos?
Un reto es convertir los datos ingresados por el usuario en un valor del enum. Se usa el método Genero.valueOf() para hacerlo, pero si el texto no coincide exactamente, lanza una excepción. Para evitar errores, se puede crear un método utilitario, por ejemplo capturarGenero, que repite la solicitud hasta recibir una opción válida.
- Se utiliza un ciclo while (true) para solicitar el dato repetidamente.
- El texto del usuario se convierte a mayúsculas antes de validar.
- Si el valor es incorrecto, se informa con un mensaje como "Género no aceptado" y se vuelve a preguntar.
Además, para mejorar la experiencia de usuario, se muestran todas las opciones permitidas antes de la captura, iterando sobre Genero.values() y mostrando los nombres de los géneros disponibles.
¿Qué ocurre si el usuario ingresa un valor inexistente?
Si el usuario intenta buscar o asignar un género que no está en el enum, el sistema muestra un mensaje de error y vuelve a preguntar. Por ejemplo, si escribe "sci-fi" en vez de "CIENCIA_FICCION", verá el mensaje de "Género no aceptado".
¿Cómo ampliar el uso de enums a otros atributos?
El uso de enums se puede extender a otros atributos, como idioma (por ejemplo, ESPANOL, INGLES, ALEMAN) o calidad (por ejemplo, FULLHD, 4K, ESTANDAR). Basta con crear enums nuevos y actualizar la clase y métodos correspondientes para asegurar que siempre se reciban valores permitidos.
¿Tienes alguna sugerencia sobre cómo mejorar la interacción con los usuarios cuando deben elegir entre diferentes opciones? Escribe tu experiencia y participa en el aprendizaje.