English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
열거 클래스의 가장 기본적인 사용법은 타입 안전한 열거를 구현하는 것입니다.
열거 상수는 콤마로 구분되며, 각 열거 상수는 객체입니다.
enum class Color{ RED,BLACK,BLUE,GREEN,WHITE }
각 열거는 열거 클래스의 예제이며, 초기화할 수 있습니다:
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
기본 이름은 열거 문자 이름입니다. 값은 0부터 시작합니다. 값을 지정하려면 생성자를 사용할 수 있습니다:
enum class Shape(value:Int){ ovel(100), rectangle(200) }
열거는 자신의 익명 클래스 및 관련 메서드를 선언하고 기본 클래스의 메서드를 override할 수 있습니다. 예를 들어:
enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING ; abstract fun signal(): ProtocolState }
열거 클래스가 어떤 멤버를 정의하면, 멤버 정의 내에서 열거 상수 정의를 구분하는 데 콜론을 사용해야 합니다
Kotlin의 열거 클래스는合成 메서드를 가지고 있으며, 정의된 열거 상수를 순회하며 그 이름으로 열거 상수를 가져올 수 있습니다.
EnumClass.valueOf(value: String): EnumClass // 지정된 name을 열거 값으로 변환합니다. 일치하지 않으면 IllegalArgumentException이 발생합니다 EnumClass.values(): Array<EnumClass> // 배열 형식으로 열거 값을 반환합니다
열거 정보를 가져옵니다:
val name: String //열거 이름을 가져옵니다 val ordinal: Int //모든 열거 배열에서 정의된 순서에 대한 열거 값을 가져옵니다
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) }
자 Kotlin 1.1 起,可以使用 enumValues<T>()
과 enumValueOf<T>()
함수는 제너릭 방식으로 열거형 클래스의 상수에 접근합니다
:
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>() // RED, GREEN, BLUE 출력 }