코틀린의 Enum은 다른 언어와 동일하게 열거형 상수로 쓰이면서 사용방법이 약간 다르다. // 기본 열거형 상수
| enum class Direction { NORTH, SOUTH, WEST, EAST } val direction: Direction = Direction.NORTH; println("Name : ${direction.name} / Idx : ${direction.ordinal}"); | cs |
실행결과 Name : NORTH / Idx : 0 |
// 값 대입 열거형 상수
| enum class Direction(val no:Int) { NORTH(0), SOUTH(1), WEST(2), EAST(3) } val direction: Direction = Direction.SOUTH; println("Name : ${direction.name} / Idx : ${direction.ordinal} / No : ${direction.no}"); | cs |
실행결과 Name : NORTH / Idx : 1 / No : 1 |
// 다양한 데이터 대입 및 val선언으로 값 변경
| enum class Direction(var no:Int, val str: String) { NORTH(0, "notrh"), SOUTH(1, "south"), WEST(2, "west"), EAST(3, "east") } val direction: Direction = Direction.SOUTH; println("no : ${direction.no} / str : ${direction.str}"); | cs |
실행결과 no : 1 / str : south |
| direction.no = 10; println("no : ${direction.no} / str : ${direction.str}"); | cs |
실행결과 no : 10 / str : south |
열거 상수들은 사실 enum예약어로 선언한 클래스를 상속받는 또 다른 클래스들이다. 이때 서브 클래스의 이름은 없고 이러한 클래스를 익명 클래스(Anonymous class)라고 한다. | enum class Direction { NORTH } | cs |
|
위 NORTH상수는 Direction클래스를 상속받고 있는 클래스 객체이다. 따라서 | enum class Direction(var no:Int) | cs |
|
위 처럼 열거형 클래스를 선언하면 하위 클래스에서는 상위 클래스의 생성자에 맞추어 호출해야 하므로 NORTH(0)이라고 표현하는 것이다.
|