Validación de entrada con enums en Java
Clase 21 de 31 • Curso de Java
Resumen
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 ACCIÓN, COMEDIA, DRAMA, ANIMADA, TERROR, CIENCIA_FICCIÓN, 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, ESPAÑOL, INGLÉS, ALEMÁN) o calidad (por ejemplo, FULLHD, 4K, ESTÁNDAR). 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.