English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La forma más básica de usar una clase de enumeración es implementar una enumeración segura de tipo.
Las constantes de enumeración están separadas por comas, cada constante de enumeración es un objeto.
enum class Color{ ROJO,NEGRO,AZUL,VERDE,BLANCO }
Cada enumeración es una instancia de la clase de enumeración, pueden ser inicializadas:
enum class Color(val rgb: Int) { ROJO(0xFF0000), VERDE(0x00FF00), AZUL(0x0000FF) }
El nombre predeterminado es el nombre del carácter de enumeración, el valor comienza en 0. Si se necesita especificar un valor, se puede usar su constructor:
enum class Shape(value: Int){ oval(100), rectangle(200) }
Las enumeraciones también admiten declarar sus clases anónimas propias y los métodos correspondientes, así como sobrescribir los métodos de la clase base. Por ejemplo:
enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING ; abstract fun signal(): ProtocolState }
si la clase de enumeración define cualquier miembro, se debe usar un punto y coma para separar la definición de la constante de enumeración en la definición del miembro
Las clases de enumeración en Kotlin tienen métodos compuestos que permiten recorrer los constantes de enumeración definidos y obtener el constante de enumeración a través de su nombre.
EnumClass.valueOf(value: String): EnumClass // convertir el nombre especificado en un valor de enumeración, si no se encuentra una coincidencia, lanzará IllegalArgumentException EnumClass.values(): Array<EnumClass> // en forma de array, devuelve el valor de la enumeración
obtener información relacionada con la enumeración:
val name: String //obtener el nombre de la enumeración val ordinal: Int //obtener el orden de la enumeración en todos los arrays de enumeración definidos
enum class Color{ ROJO,NEGRO,AZUL,VERDE,BLANCO } fun main(args: Array<String>) { var color: Color = Color.BLUE println(Color.values()) println(Color.valueOf("RED")) println(color.name) println(color.ordinal) }
desde Kotlin 1.1 起,可以使用 enumValues<T>()
y enumValueOf<T>()
La función accede a los constantes de la clase enumerada de manera genérica
:
enum class RGB { RED, GREEN, BLUE } inline fun <reified T : Enum<T>> printAllValues() { print(enumValues<T>().joinToString { it.name }) } fun main(args: Array<String>) { printAllValues<RGB>() // Escribir RED, GREEN, BLUE }