Kotlin
18. 코틀린 Enum Class(열거형 클래스) 알아보기
가독성 0%
2019. 5. 30. 13:57
반응형
enum Class 를 사용하는 이유
- 코드가 단순해지며, 가독성 UP
- 인스 턴스 생성과 상속을 방지, 상수값의 타입 안정성 보장
enum class Direction {
NORTH, SOUTH, WEST, EAST
}
fun main(args: Array<String>) {
getDirection(Direction.NORTH)
getDirection(Direction.SOUTH)
getDirection(Direction.WEST)
getDirection(Direction.EAST)
}
fun getDirection(d : Direction){
when(d){
Direction.NORTH -> println("북쪽")
Direction.SOUTH -> println("남쪽")
Direction.WEST -> println("서쪽")
Direction.EAST -> println("동쪽")
}
}
/*
실행 결과
북쪽
남쪽
서쪽
동쪽
*/
// 각 열거 형은 enum 클래스의 인스턴스이기 때문에 다음과 같이 초기화 할 수 있습니다.
enum class Color(val rgb: Int, val colorName: String) {
RED(0xFF0000, "빨강"),
GREEN(0x00FF00, "초록"),
BLUE(0x0000FF, "파랑")
}
fun main(args: Array<String>) {
getColor(Color.RED)
getColor(Color.GREEN)
getColor(Color.BLUE)
}
fun getColor(c: Color) {
when (c) {
Color.RED -> println(c.colorName)
Color.GREEN -> println(c.colorName)
Color.BLUE -> println(c.colorName)
}
}
/*
실행 결과
빨강
초록
파랑
*/
/*
enum 상수는 자신의 익명 클래스도 선언할 수 있다.
enum 클래스가 멤버를 정의하는 경우 Java에서와 마찬가지로
멤버 정의에서 열거 형 상수 정의를 세미콜론으로 구분해야합니다.
Enum 항목에는 내부 클래스가 아닌 중첩 형식을 포함 할 수 없습니다
*/
enum class ConnectState {
SUCCESSFUL{
override fun signal() = println("연결 성공")
},
FAILURE {
override fun signal() = println("연결 실패")
};
abstract fun signal()
}
fun main(args: Array<String>) {
ConnectState.SUCCESSFUL.signal()
ConnectState.FAILURE.signal()
}
/*
실행 결과
연결 성공
연결 실패
*/
위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다.
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 2. 코틀린 함수 정의하기
2019/05/19 - [Kotlin] - 코틀린 기초 문법) 5. 코틀린 조건식 if, when, switch 문 사용하기
반응형