[Kotlin] Enum Class

dnjstjt12·2024년 6월 29일

Enum Class

Enum class는 여러개의 값을 열거해서 사용할 수 있는 기능을 제공한다.

enum class Direction{
	NORTH,SOUTH,WEST,EAST
}

Enum class 안의 상수들은 인스턴스이기 때문에 다음과 같이 초기화 할 수 있다.

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

fun main() {
    println(Color.RED.name)
    println(Color.RED.rgb.toString(16))
}
RED
ff000

Enum<T>

모든 Enum class의 최상위 class는 kotlin.Enum class이고, abstract class로 정의 되어있다.

public abstract class Enum<E : Enum<E>>(name: String, ordinal: Int): Comparable<E> 

name: Enum의 이름
Ordinal: Enum 순서에 따른 인덱스

Anonymous Classes

Enum Class는 abstract class이기 때문에, Enum 상수는 method와 anonymous class들 선언하고 기본 method를 override 할 수 있다.

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },

    TALKING {
        override fun signal() = WAITING
    };

    abstract fun signal(): ProtocolState
}

Interface

enum class는 abstract class이기 때문에 직접적으로 상속할 수 없지만, 인터페이스를 구현하는 것은 가능하다.

interface Printable {
    fun print()
}

enum class ProtocolState : Printable {
    WAITING {
        override fun print() {
            println("Waiting state")
        }
    },
    TALKING {
        override fun print() {
            println("Talking state")
        }
    },
    DISCONNECTED {
        override fun print() {
            println("Disconnected state")
        }
    };
}

참고
https://kotlinlang.org/docs/enum-classes.html#working-with-enum-constants

profile
안녕하세요!

0개의 댓글