본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 39. enum

by 김마리님 2020. 12. 11.

enum은 써봤지만 멤버함수랑 프로퍼티 주는건...

이게 자바에 있을 순 있는데 개발에 써먹어본적이 없어서(ㅋㅋ)

 

열거 클래스도 클래스라 프로퍼티와 멤버 변수를 가질 수 있다.

package enumEx

enum class Mode(val number : Int) {
    SELETCTION(0),
    PEN(1),
    SHAPE(2),
    ERASER(3);

    fun printNumber(){
        println("모드 : $number")
    }
}

fun main() {
    val mode : Mode = Mode.ERASER

    println(mode.number)
    mode.printNumber()
}

열거 클래스에 생성자가 있으면 반드시 (인수)를 적어 생성자를 호출해야한다.

열거 클래스는 열겨된 상수 뒤에 반드시 붙어야 한다.

 


 

enum 클래스는 내부적으로 name과 ordinal 함수를 가지고 있다.

name은 함수의 이름을, ordinal은 함수의 위치를 반환한다.

 

package enumEx

enum class Mode(val number : Int) {
    SELETCTION(0),
    PEN(1),
    SHAPE(2),
    ERASER(3);

}

fun main() {
    val shapeMode : Mode = Mode.SHAPE
    println(shapeMode.name)
    println(shapeMode.ordinal)

    println(Mode.valueOf("PEN").ordinal)
}

 

결과 :

 

SHAPE
2
1

 

거의 모든 컴퓨터 언어가 마찬가지겠지만 코틀린의 enum도 0부터 시작하기 때문에, 2를 반환한다.

valueOf로 enum 이름과 같은걸 찾아서, 그 값의 name이나 ordinal을 찾는 것도 가능하다.

 

 

반응형

'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글

Kotlin] 41. 위임  (0) 2020.12.14
Kotlin] 40. sealed Class  (0) 2020.12.11
Kotlin] 38. 배열  (0) 2020.12.11
Kotlin] 37. for  (0) 2020.12.11
Kotlin] 36. 반복자  (0) 2020.12.11