728x90
반응형
1. 열거 클래스(Enum Class)
클래스 선언문 앞에 enum 키워드를 붙이면 열거 클래스로 선언이 가능하다.
열거 클래스에 들어가는 식별자를 열거 상수라고 한다.
열거 클래스에 포함시킬 식별자를 쉼표를 이용해 나열하며, 식별자는 모두 대문자로 하는 것이 좋다.
열거 클래스.열거 상수 형태로 초기화 가능하다.
enum class Mode {
SELECTION, PEN, SHAPE, ERASER // 열거 상수
}
fun main() {
// 현재 선택된 모드
val mode: Mode = Mode.PEN
when(mode) {
Mode.SELECTION -> println("선택 모드")
Mode.PEN -> println("펜 모드")
Mode.SHAPE -> println("도형 모드")
Mode.ERASER -> println("징개 모드")
}
}
2. 열거 클래스에 프로퍼티와 멤버 함수 선언하기
열거 클래스도 클래스의 일종이기 때문에 프로퍼티와 멤버 함수를 가질 수 있다.
enum class Mode(val number: Int) { // 생성자 매개변수에서 프로퍼티 선언
SELECTION(0),
PEN(1),
SHAPE(2),
ERASER(3); // 마지막 열거 상수에는 ; 반드시 붙여야 함
// 열거 클래스에 멤버 함수 선언. 멤버 함수는 반드시 열거 상수 나열문보다 뒤에 와야함
fun printNumber() {
println("모드: $number")
}
}
fun main() {
// 현재 선택된 모드
val mode: Mode = Mode.ERASER
println(mode.number)
mode.printNumber()
}
3. 열거 클래스 활용하기
모든 열거 클래스는 자동으로 Enum이라는 클래스를 상속한다.
Enum 클래스에는 다음과 같은 멤버가 있다.
val name: String => 열거 상수의 이름을 가져옴
val ordinal: Int => 열거 상수의 순서를 가져옴
또한, 열거 클래스에는 다음과 같은 멤버 함수가 기본적으로 포함되어 있다.
fun valueOf(value: String): 열거 클래스 => 열거 클래스에 해당하는 열거 상수의 순서를 가져옴
fun values(): Array<열거클래스> => 열거 클래스에 있는 모든 열거 상수들을 가져옴
아래 예제를 통해 멤버와 멤버 함수를 어떻게 사용하는지 살펴보자
enum class Mode{
SELECTION, PEN, SHAPE, ERASER
}
fun main() {
val shapeMode: Mode = Mode.SHAPE
println(shapeMode.name) // SHAPE
println(shapeMode.ordinal) // 2
val modes:Array<Mode> = Mode.values()
for(mode: Mode in modes)
println(mode)
/*
SELECTION
PEN
SHAPE
ERASER
*/
println(Mode.valueOf("PEN").ordinal) // 1
}
728x90
반응형
'TIL > Kotlin' 카테고리의 다른 글
[TIL/Kotlin] 우체국 Open API로 EMS 배송 추적하기 (0) | 2023.10.15 |
---|---|
[TIL/Kotlin] 코틀린 고급문법_sealed 클래스, 위임된 프로퍼티, 클래스 위임 (0) | 2023.05.27 |
[TIL/Kotlin] 코틀린 고급문법_배열(Array)과 배열을 가변 인수로 활용하기 (0) | 2023.05.26 |
[TIL/Kotlin] 코틀린 고급문법_반복자(Iterator)와 반복문 for문 (0) | 2023.05.26 |
[TIL/Kotlin] 코틀린 고급문법_in/out 키워드와 ..연산자와 범위 표현식 (0) | 2023.05.26 |