Zoeken…


Opmerkingen

Net als in Java hebben enum-klassen in Kotlin synthetische methoden waarmee de gedefinieerde enum-constanten kunnen worden weergegeven en een enum-constante met de naam kan worden verkregen. De handtekeningen van deze methoden zijn als volgt (ervan uitgaande dat de naam van de enum-klasse EnumClass ):

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

De methode IllegalArgumentException valueOf() IllegalArgumentException een IllegalArgumentException als de opgegeven naam niet overeenkomt met een van de enum-constanten die in de klasse zijn gedefinieerd.

Elke enum-constante heeft eigenschappen om zijn naam en positie in de enum-klassenverklaring te verkrijgen:

val name: String
val ordinal: Int

De enum-constanten implementeren ook de vergelijkbare interface, waarbij de natuurlijke volgorde de volgorde is waarin ze zijn gedefinieerd in de enum-klasse.

initialisatie

Enum-klassen kunnen net als andere klassen een constructor hebben en worden geïnitialiseerd

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

Functies en eigenschappen in enums

Enum-klassen kunnen ook leden declareren (dwz eigenschappen en functies). Een puntkomma ( ; ) moet tussen het laatste enum-object en de eerste ledenverklaring worden geplaatst.

Als een lid abstract , moeten de enum-objecten dit implementeren.

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)
}

Eenvoudig opsomming

enum class Color {
  RED, GREEN, BLUE
}

Elke enum-constante is een object. Enum-constanten worden gescheiden door komma's.

veranderlijkheid

Enums kunnen veranderlijk zijn, dit is een andere manier om een singleton-gedrag te verkrijgen:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow