[Kotlin] 코틀린 기초 (enum)

Shin·2025년 11월 12일

Kotlin

목록 보기
2/6
post-thumbnail

enum

클래스를 선언할 때 class 클래스이름 이렇게 사용했다면, enum클래스는 class앞에 enum 키워드를 붙여주면 된다.

enum class Rank {
    FIRST, SECOND, THIRD
}

다음과 같이 각 상수에 값을 부여하여 사용한다.

enum class Rank(val rank: Int, val score: Int) {
    FIRST(1, 10),
    SECOND(2, 8),
    THIRD(3, 6);
}
fun main() {
    println(Rank.FIRST.score) // 10출력
}

함수를 정의하여 공통된 기능을 넣거나, companion object 로 자바의 static 메소드처럼 enum 내부에서 로직을 구현할 수 있다.

함수 정의

enum class Rank(val rank: Int, val score: Int) {
    FIRST(1, 10),
    SECOND(2, 8),
    THIRD(3, 6);

	// 함수 정의
    fun isWinning(): Boolean = this == FIRST
}
fun main() {
    println(Rank.FIRST.isWinning())  // true
    println(Rank.SECOND.isWinning()) // false
    println(Rank.THIRD.isWinning())  // false
}

componion object

enum class Rank(val rank: Int, val score: Int) {
    FIRST(1, 10),
    SECOND(2, 8),
    THIRD(3, 6);

    fun isWinning(): Boolean = this == FIRST

    companion object {
        fun fromRank(rank: Int): Rank? {
            return values().find { it.rank == rank }
        }
    }
}
fun main() {
    val result = Rank.fromRank(2)
    println(result)				 // SECOND
    println(result?.isWinning()) // false
}

오늘은 enum 클래스를 제외하고 새로 익힌 문법은 없다.
어제보다 조금 더 코틀린에 익숙해졌지만 아직 for문 사용이 어색해서 계속 찾아보게 된다😂 자바와 문법적으로 많이 겹치는 것 같으면서도 아닌 부분이 곳곳에 있어서 기능 개발하는데 계속 멈칫하게되고 진도를 원활하게 빼지 못했다. 생각만큼 쉬운 작업이 아니었다는걸 체감하는 중..

0개의 댓글