개발 공부/kotlin

kotlin enum class(열거형 클래스)

yong_DD 2022. 7. 3. 15:41

enum class는 열거 상수들로 이루어져있고 이 열거 상수는 각 객체로 이루어져있다.

상태 값이나 비슷한 속성 값을 상수로 만들어 편하게 사용할 수 있다.

하단의 예시를 보면 쉽게 이해할 수 있다.

 

enum class DayOfWeek{
    MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
}

fun getWeeklyTodoList(today:DayOfWeek):String{
    return when(today){
        DayOfWeek.MONDAY -> "work"
        DayOfWeek.TUESDAY -> "work.."
        DayOfWeek.WEDNESDAY -> "work..."
        DayOfWeek.THURSDAY -> "work...."
        DayOfWeek.FRIDAY -> "work....."
        DayOfWeek.SATURDAY -> "rest!"
        DayOfWeek.SUNDAY -> "study"
    }
}

fun main(arg: Array<String>) {
    val today = DayOfWeek.MONDAY
    println(getWeeklyTodoList(today))  //work
}

enum값에 속성값을 포함할 수도 있다.

fun main(arg: Array<String>) {
    val today = DayOfWeek.MONDAY
    println(today.checkWork("work")) //true
    println(DayOfWeek.SUNDAY.checkWork("work")) //false
}

enum class DayOfWeek(val work:String){
    MONDAY("work"),
    TUESDAY("work.."),
    WEDNESDAY("work..."),
    THURSDAY( "work...."),
    FRIDAY("work....."),
    SATURDAY("rest!"),
    SUNDAY("study");

    fun checkWork(checkWork:String) = checkWork == this.work
}

 

+ 참고

속성 값을 넣으려면 해당 매개변수가 무조건 있어야한다.

하단 처럼 하면 오류가 난다

enum class DayOfWeek{
    MONDAY("work"),
    TUESDAY("work.."),
    WEDNESDAY("work..."),
    THURSDAY( "work...."),
    FRIDAY("work....."),
    SATURDAY("rest!"),
    SUNDAY("study")
}