50 lines
801 B
Markdown
50 lines
801 B
Markdown
# 열거형
|
|
|
|
```kotlin
|
|
enum class Direction {
|
|
NORTH, SOUTH, EAST, WEST
|
|
}
|
|
|
|
enum class Color(val rgb: Int) {
|
|
RED(0xff0000),
|
|
GREEN(0x00ff00),
|
|
BLUE(0x0000ff)
|
|
}
|
|
```
|
|
|
|
```kotlin
|
|
val dir = Direction.valueOf("NORTH")
|
|
for (item in Direction.values()) {
|
|
// ...
|
|
}
|
|
```
|
|
|
|
## 익명 클래스
|
|
|
|
```kotlin
|
|
enum class State {
|
|
WAITING {
|
|
override fun signal() = TALKING
|
|
},
|
|
TALKING {
|
|
override fun signal() = WAITING
|
|
}
|
|
|
|
abstract fun signal(): State
|
|
}
|
|
```
|
|
|
|
## 인터페이스
|
|
|
|
```kotlin
|
|
enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator {
|
|
PLUS {
|
|
override fun apply(t: Int, u: Int): Int = t + u
|
|
},
|
|
TIMES {
|
|
override fun apply(t: Int, u: Int): Int = t * u
|
|
};
|
|
|
|
override fun applyAsInt(t: Int, u: Int) = apply(t, u)
|
|
}
|
|
``` |