더북(TheBook)

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 값이 각 상수에 부여된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.