Enums en Kotlin: Constantes organizadas para casos específicos
Clase 18 de 35 • Curso de Kotlin
Resumen
Los enums o enumeraciones en Kotlin facilitan la organización clara y sencilla de grupos limitados de constantes relacionadas. Estas herramientas resultan prácticas cuando necesitas representar un conjunto fijo y limitado de valores, como carpetas de correo electrónico, prioridades o estados concretos.
¿Qué son los enums y cuándo utilizarlos en Kotlin?
En Kotlin, un enum es un tipo especial de clase que contiene un número fijo de constantes relacionadas. Para declararlos, empleamos la combinación de palabras clave enum class
. Un ejemplo de aplicación común sería categorizar las carpetas de una bandeja de email:
enum class EmailFolders {
INBOX,
SENT,
DRAFT,
ARCHIVE,
SPAM
}
Los enums proporcionan un nivel adicional de control y claridad, siendo especialmente útiles al combinarlos con estructuras como when.
¿Cómo utilizar enums con estructuras de control como el when?
Al usar una variable de tipo enum con la estructura when
, Kotlin verifica automáticamente que contemples todos los posibles casos, evitando así errores u omisiones:
when(carpetaActual) {
EmailFolders.INBOX -> println("Bienvenido a bandeja de entrada")
EmailFolders.SENT -> println("Bienvenido a enviados")
EmailFolders.DRAFT -> println("Bienvenido a borradores")
EmailFolders.ARCHIVE -> println("Bienvenido a archivados")
EmailFolders.SPAM -> println("Bienvenido a spam")
}
Esto asegura que cada opción disponible sea tratada adecuadamente, mejorando considerablemente la consistencia del entorno de trabajo.
¿Cómo asignar propiedades adicionales a cada constante en un enum?
Los enums no sólo guardan simples constantes, también permiten asignarles propiedades únicas, como niveles de prioridad o colores específicos:
enum class EmailPriority(val level: Int, val color: String) {
LOW(1, "gris"),
NORMAL(2, "azul"),
HIGH(3, "naranja"),
URGENT(4, "rojo")
}
Esta capacidad permite mayor flexibilidad y una mejor integración visual o lógica dentro de tu aplicación.
¿Cómo transformar entradas de usuario usando enums?
Cuando el usuario introduce un valor, es posible convertirlo directamente en una enumeración mediante una función dedicada.
fun prioridadAPriority(entero: Int): EmailPriority? {
return if (entero in 0 until EmailPriority.entries.size)
EmailPriority.entries[entero]
else null
}
Verificar que la entrada del usuario cae dentro del rango permitido evita errores inesperados en tiempo de ejecución.
¿Cómo iterar sobre los valores de un enum?
Para recorrer y utilizar todos los valores de un enum, Kotlin proporciona la función entries
y métodos como forEachIndexed
, útiles para mostrar índices y propiedades:
EmailPriority.entries.forEachIndexed { index, priority ->
println("$index: ${priority.name}, nivel ${priority.level}, color ${priority.color}")
}
Esto resulta especialmente valioso al construir interfaces amigables al usuario, mostrando claramente opciones disponibles.
Ejercicio práctico con enums
Se propone crear un enum llamado EstadoEmail
con las constantes NUEVO
, LEIDO
y RESPONDIDO
. Además, asignarles íconos representativos (en formato String
o Int
). Finalmente, implementar una función para convertir una entrada numérica a uno de estos estados, mostrando claramente su índice e icono asociado.
Te invitamos a compartir dudas o resultados en los comentarios. ¡Sigue practicando y fortaleciendo tus habilidades con Kotlin!