반응형

코틀린 열거형(enum) 예제

 

코틀린에서 enum 클래스는 이름 지정된 상수 집합을 정의하는 데 사용됩니다.

enum은 열거형이라고도 하며, 제한된 값 집합을 나타낼 때 유용합니다.

예를 들어 요일, 계절, 방향 등을 나타낼 때 enum을 사용할 수 있습니다.

 

다음은 코틀린에서 enum을 정의하고 사용하는 다양한 예제입니다.

 

1. 기본적인 enum 클래스 정의

 

enum class 키워드를 사용하여 enum 클래스를 정의합니다. 각 상수는 쉼표로 구분합니다.

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

fun main() {
    val today = Weekday.FRIDAY
    println(today)  // 출력: FRIDAY
}

 

2. enum 클래스에 값 추가

 

enum 상수에 값을 추가할 수 있습니다. 예를 들어 요일 enum에 한국어 이름을 추가할 수 있습니다.

enum class Weekday(val koreanName: String) {
    MONDAY("월요일"), TUESDAY("화요일"), WEDNESDAY("수요일"), 
    THURSDAY("목요일"), FRIDAY("금요일"), SATURDAY("토요일"), SUNDAY("일요일")
}

fun main() {
    val today = Weekday.FRIDAY
    println("${today.koreanName}은 ${today}입니다.")  // 출력: 금요일은 FRIDAY입니다.
}

 

3. enum 클래스에 메서드 추가

 

enum 클래스에 메서드를 추가하여 enum 상수와 관련된 작업을 수행할 수 있습니다.

enum class Color(val rgb: Int) {
    RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF);

    fun isPrimary(): Boolean {
        return this == RED || this == GREEN || this == BLUE
    }
}

fun main() {
    val color = Color.RED
    println(color.rgb)  // 출력: 16711680
    println(color.isPrimary())  // 출력: true
}

 

4. when 표현식과 함께 사용

 

when 표현식을 사용하여 enum 클래스의 값에 따라 다른 작업을 수행할 수 있습니다.

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

fun main() {
    val direction = Direction.NORTH

    when (direction) {
        Direction.NORTH -> println("북쪽")
        Direction.SOUTH -> println("남쪽")
        Direction.EAST -> println("동쪽")
        Direction.WEST -> println("서쪽")
    }
}

 

5. enum 클래스의 프로퍼티

 

enum 클래스는 name과 ordinal 프로퍼티를 제공합니다.

  • name: enum 상수의 이름을 문자열로 반환합니다.
  • ordinal: enum 상수의 순서를 0부터 시작하는 정수로 반환합니다.
enum class Weekday {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

fun main() {
    val today = Weekday.FRIDAY
    println(today.name)  // 출력: FRIDAY
    println(today.ordinal)  // 출력: 4
}

 

6. 추상 메서드

 

enum 클래스는 추상 메서드를 가질 수 있으며, 각 enum 상수에서 이를 구현해야 합니다.

enum class Shape {
    CIRCLE {
        override fun draw() {
            println("원을 그립니다.")
        }
    },
    RECTANGLE {
        override fun draw() {
            println("사각형을 그립니다.")
        }
    };

    abstract fun draw()
}

fun main() {
    Shape.CIRCLE.draw()  // 출력: 원을 그립니다.
}

 

enum 클래스는 코드를 더 읽기 쉽고 유지 관리하기 쉽게 만드는 데 도움이 되므로, 제한된 값 집합을 다룰 때 활용하면 좋습니다.

 

 

반응형

+ Recent posts