English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Clases enumeradas en Kotlin

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
}

inicialización de enumeración

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

uso de constantes de enumeración

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

ejemplo en línea

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
}