코틀린 또한 자바와 같이 enum class 를 지원합니다. 코틀린에서의 사용법은 아래와 같습니다.
enum class Color(val rgb: Int) {
RED(0XFF0000), GREEN(0X00FF00), BLUE(0X0000FF)
}
fun main() {
for (item in Color.values()) {
println("item : $item , rgb : ${item.rgb}")
}
println("Enum Class.values : ${Color.values()}")
println("Enum class.valueOfRGB : ${Color.valueOf("RED").rgb}")
}
자바와 같이 생성자, 필드, 메소드를 선언할 수 있으며 values
, valueOf
메소드로 인스턴스들을 불러올 수 있습니다.
enum
은 자신의 익명 클래스(Anonymous Class) 를 선언할 수 있습니다. 익명 클래스에서 멤버들을 정의할 때, enum 상수 정의와 메소드를 ;(세미콜론)
으로 구분해야 합니다.
enum class ProtocolState {
WAITING {
override fun signal() = TALKING
},
TALKING {
override fun signal() = WAITING
};
abstract fun signal(): ProtocolState
}