수색…


비고

Java에서와 마찬가지로 Kotlin의 enum 클래스는 정의 된 열거 형 상수를 나열하고 그 이름으로 열거 형 상수를 가져올 수있는 합성 메소드를 가지고 있습니다. 이러한 메소드의 서명은 다음과 같습니다 (enum 클래스의 이름이 EnumClass 라고 가정).

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

지정된 이름이 클래스에 정의 된 열거 형 상수 중 하나와 일치하지 않으면 valueOf() 메서드는 IllegalArgumentException 던집니다.

모든 enum 상수에는 enum 클래스 선언에서 이름과 위치를 가져 오는 속성이 있습니다.

val name: String
val ordinal: Int

열거 형 상수는 또한 Comparable 인터페이스를 구현하며 자연 순서는 열거 형 클래스에 정의 된 순서입니다.

초기화

다른 클래스처럼 Enum 클래스는 생성자를 가질 수 있고 초기화 될 수 있습니다.

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

열거 형의 함수 및 속성

Enum 클래스는 멤버 (즉, 속성 및 함수)를 선언 할 수도 있습니다. 세미콜론 ( ; )은 마지막 enum 객체와 첫 번째 멤버 선언 사이에 있어야합니다.

멤버가 abstract 인 경우 enum 객체는이를 구현해야합니다.

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

enum class Color {
  RED, GREEN, BLUE
}

각 열거 형 상수는 하나의 객체입니다. Enum 상수는 쉼표로 구분됩니다.

돌연변이

열거 형은 변경 가능할 수 있습니다. 이것은 싱글 톤 동작을 얻는 또 다른 방법입니다.

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