본문 바로가기

Kotlin

(Kotlin) 상수를 다루는 클래스 enum 클래스란??

enum 클래스란??

  • 간단하게 말해서 상수(변하지 않는 값)을 다루는 클래스를 말한다
  • 허용값이 제한되기 때문에 의미 파악이 상대적으로 쉽다

enum 클래스 작성 방법

enum class Direction {
    NORTH, SOUTH, WEST, EAST
}
  • 위와 같이 enum을 명시해주고 상수들을 쉼표 단위로 작성할 수 있다
  • 상수도 enum 클래스의 인스턴스 이므로 아래와 같이 초기화가 가능하다
  • Application에서 사용하는 외부 Api를 쉽게 관리가 가능하다
  • 상수의 확장이 용이하다
enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}
  • enum 클래스는 interface를 상속을 받아서 구현이 가능하지만 모든 항목에 대한 인터페이스 맴버의 공통 구현을 제공하거나 익명 클래스 내의 각 항목에 대한 별도의 구현을 제공한다
  • 모든 enum 클래스는 기본적으로 comparable 인터페이스를 구현하게 된다
  • enum 클래스는 정의된 enum 상수들을 나열하고 해당 이름으로 enum 상수를 가져오는 합성 속성과 메서드가 있다
EnumClass.valueOf(value: String): EnumClass
EnumClass.entries: EnumEntries<EnumClass> // specialized List<EnumClass>

enum class RGB { RED, GREEN, BLUE }

fun main() {
    for (color in RGB.entries) println(color.toString()) // prints RED, GREEN, BLUE
    println("The first color is: ${RGB.valueOf("RED")}") // prints "The first color is: RED"
    println("The Second color is: ${RGB.GREEN}")
}
  • 위와 같이 먼저 클래스를 정의한 다음에 클래스의 valueor를 사용하여 정의하는 방법도 있고 직접 사용하는 방법도 있다
  • 만약에 enum 클래스 내부에 있지 않은 코드를 사용하려고 시도할 경우 IllegalArgumentException 아 벌샹헌더

내부 속성

  • name : enum 클래스 내부 속성의 이름을 알려준다
  • ordinal : enum 클래스 내부에서 enum 상수들의 위치를 알려준다

왜 사용할까

  • 다양한 이유가 있지만 가장 중요안 이유는 인스턴스 생성과 상속을 방지하며 상수 값의 안정성을 보장하기 위해서 사용한다