enum 클래스가 정의된 파일에서 enum 값을 임포트할 수도 있다.
Enumerations/RecursiveEnumImport.kt
package enumerations
import atomictest.eq
import enumerations.Size.* // [1]
enum class Size {
Tiny, Small, Medium, Large, Huge, Gigantic
}
fun main() {
Gigantic eq "Gigantic" // [2]
Size.values().toList() eq // [3]
listOf(Tiny, Small, Medium,
Large, Huge, Gigantic)
Tiny.ordinal eq 0 // [4]
Huge.ordinal eq 4
}
• [1] Size 정의가 들어 있는 파일에서 Size 안의 이름을 Size 정의보다 먼저 임포트한다.
• [2] import를 하고 나면 이넘 이름을 한정시키지 않아도 된다.
• [3] values()를 사용해 이넘의 값을 이터레이션할 수 있다. values()는 Array를 반환하므로 toList()를 호출해서 배열을 List로 만든다.
• [4] 한 enum 안에서 맨 처음 정의된 상수에 0이라는 ordinal 값이 지정된다. 그다음부터는 순서대로 1씩 증가된 ordinal 값이 각 상수에 부여된다.