PHpullh
학습 라이브러리/Kotlin/열거형 클래스 (Enum Class)

KOTLIN · 기초 문법

열거형 클래스 (Enum Class)

enum class는 상수 집합을 정의하며, 프로퍼티와 메서드를 가질 수 있습니다. 추상 메서드를 통해 각 상수별 동작도 정의 가능합니다.

기초 문법중급enumentriesvalueOfordinal

핵심 설명

enum class는 상수 집합을 정의하며, 프로퍼티와 메서드를 가질 수 있습니다. 추상 메서드를 통해 각 상수별 동작도 정의 가능합니다.

Kotlin code

enum class Direction(val dx: Int, val dy: Int) {
    NORTH(0, -1),
    SOUTH(0, 1),
    EAST(1, 0),
    WEST(-1, 0);

    fun opposite(): Direction = when (this) {
        NORTH -> SOUTH
        SOUTH -> NORTH
        EAST  -> WEST
        WEST  -> EAST
    }
}

fun main() {
    val dir = Direction.EAST
    println("${dir.name}: dx=${dir.dx}, dy=${dir.dy}")
    println("반대: ${dir.opposite()}")

    // values()와 valueOf()
    Direction.entries.forEach { println(it) }
    val south = Direction.valueOf("SOUTH")
    println("ordinal: ${south.ordinal}")
}

학습 팁

Kotlin 1.9+에서는 values() 대신 entries 프로퍼티를 사용하세요. 매 호출마다 배열을 복사하지 않아 성능이 더 좋습니다.

주의할 점

valueOf()에 존재하지 않는 이름을 전달하면 IllegalArgumentException이 발생합니다. 사용자 입력에는 entries.find를 사용하세요.

자주 묻는 질문

열거형 클래스 (Enum Class)란 무엇인가요?

enum class 는 상수 집합을 정의하며, 프로퍼티와 메서드를 가질 수 있습니다. 추상 메서드를 통해 각 상수별 동작도 정의 가능합니다.

열거형 클래스 (Enum Class) 학습 시 주의할 점은 무엇인가요?

valueOf() 에 존재하지 않는 이름을 전달하면 IllegalArgumentException 이 발생합니다. 사용자 입력에는 entries.find 를 사용하세요.