Buscar..


Observaciones

Al igual que en Java, las clases de enumeración en Kotlin tienen métodos sintéticos que permiten enumerar las constantes de enumeración definidas y obtener una constante de enumeración por su nombre. Las firmas de estos métodos son las siguientes (asumiendo que el nombre de la clase enum es EnumClass ):

EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>

El método valueOf() lanza una IllegalArgumentException si el nombre especificado no coincide con ninguna de las constantes de enumeración definidas en la clase.

Cada constante de enumeración tiene propiedades para obtener su nombre y posición en la declaración de clase de enumeración:

val name: String
val ordinal: Int

Las constantes de enumeración también implementan la interfaz Comparable, siendo el orden natural el orden en el que se definen en la clase enum.

Inicialización

Enumerar clases como cualquier otra clase puede tener un constructor y ser inicializado

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

Funciones y propiedades en enumeraciones

Las clases de enumeración también pueden declarar miembros (es decir, propiedades y funciones). Se debe colocar un punto y coma ( ; ) entre el último objeto de enumeración y la primera declaración del miembro.

Si un miembro es abstract , los objetos enumerados deben implementarlo.

enum class Color {
    RED {
        override val rgb: Int = 0xFF0000
    },
    GREEN {
        override val rgb: Int = 0x00FF00
    },
    BLUE {
        override val rgb: Int = 0x0000FF
    }

    ;

    abstract val rgb: Int

    fun colorString() = "#%06X".format(0xFFFFFF and rgb)
}

Enumeración simple

enum class Color {
  RED, GREEN, BLUE
}

Cada enum constante es un objeto. Las constantes enum están separadas por comas.

Mutabilidad

Las enumeraciones pueden ser mutables, esta es otra forma de obtener un comportamiento singleton:

enum class Planet(var population: Int = 0) {
    EARTH(7 * 100000000),
    MARS();

    override fun toString() = "$name[population=$population]"
}

 println(Planet.MARS) // MARS[population=0]
 Planet.MARS.population = 3
 println(Planet.MARS) // MARS[population=3]


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow