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

Classe de type enum en Kotlin

L'utilisation la plus basique de la classe d'enumeration consiste à implémenter une enumeration sécurisée au type.

Les constantes d'enumeration sont séparées par des virgules, chaque constante d'enumeration est un objet.

enum class Color{
    RED, BLACK, BLUE, GREEN, WHITE
}

Initialisation de l'enumeration

Chaque constante d'enumeration est une instance de la classe d'enumeration, elles peuvent être initialisées :

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

Le nom par défaut est le nom de la constante d'enumeration, et la valeur commence à 0. Si vous devez spécifier une valeur, vous pouvez utiliser son constructeur :

enum class Shape(value: Int){
    ovel(100),
    rectangle(200)
}

Les enumerations supportent également la déclaration de classes anonymes et des méthodes correspondantes, ainsi que l'override des méthodes de la classe mère. Par exemple :

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },
    TALKING {
        override fun signal() = WAITING
    ;
    abstract fun signal(): ProtocolState
}

Si la classe d'enumeration définit des membres, les constantes d'enumeration doivent être séparées par des points-virgules dans la définition des membres.

Utilisation des constantes d'enumeration

Les classes d'enumeration en Kotlin ont des méthodes composées qui permettent de parcourir les constantes d'enumeration définies et d'obtenir des constantes d'enumeration par leur nom.

EnumClass.valueOf(value: String): EnumClass  // Convertir le nom spécifié en valeur d'enumeration, si le match n'est pas réussi, il sera lancé IllegalArgumentException
EnumClass.values(): Array<EnumClass>        // Retourner les valeurs d'enumeration sous forme d'array,

Obtenir des informations sur l'enumeration :

val name: String //Obtenir le nom de l'enumeration
val ordinal: Int //Obtenir l'ordre d'une valeur d'enumeration définie dans l'ensemble des valeurs d'enumeration

Exemple en ligne

enum class Color{
    RED, BLACK, BLUE, GREEN, WHITE
}
fun main(args: Array<String>) {
    var color: Color = Color.BLUE
    println(Color.values())
    println(Color.valueOf("RED"))
    println(color.name)
    println(color.ordinal)
}

à partir de Kotlin 1.1 起,可以使用 enumValues<T>() et enumValueOf<T>() La fonction accède aux constantes de la classe d'enumeration de manière générique :

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>() // Sortie RED, GREEN, BLUE
}