Поиск…


замечания

Как и в Java, классы enum в Kotlin имеют синтетические методы, позволяющие перечислять определенные константы enum и получать константу enum по ее имени. Подписи этих методов следующие (при условии, что имя класса enum - EnumClass ):

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

Метод valueOf() IllegalArgumentException если указанное имя не соответствует ни одной из констант перечисления, определенных в классе.

Каждая константа перечисления имеет свойства для получения своего имени и позиции в объявлении класса enum:

val name: String
val ordinal: Int

Константы перечисления также реализуют интерфейс Comparable, при этом естественным порядком является порядок, в котором они определены в классе enum.

инициализация

Классы Enum, как и любые другие классы, могут иметь конструктор и быть инициализированы

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

Функции и свойства в перечислениях

Классы enum могут также объявлять члены (т. Е. Свойства и функции). Точка с запятой ( ; ) должна быть помещена между последним объектом перечисления и объявлением первого члена.

Если элемент является abstract , объекты перечисления должны его реализовать.

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

Простой перечисление

enum class Color {
  RED, GREEN, BLUE
}

Каждая константа перечисления является объектом. Константы континуума разделяются запятыми.

переменчивость

Перечисления могут быть изменчивыми, это еще один способ получить одноэлементное поведение:

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow