enum 클래스

enum은 단순한 이름 상수(name constant)가 아니라, 각 상수마다 다른 데이터를 가질 수 있는 객체다.

즉, 아래처럼 NAVER, KAKAO는 단순히 "naver"나 "kakao"라는 이름이 아니라, Partner라는 클래스의 인스턴스이고, 각각 다른 값을 갖는 객체다:

enum class Partner(val value: String) { NAVER("naver"), KAKAO("kakao") }

 

Kotlin의 enum class에서 value: String처럼 val 없이 생성자 매개변수만 선언할 때, 이런 단순 생성자 매개변수는 왜 존재하는가? 언제 쓰는가?

내부 처리용 임시 매개변수로 사용하려는 경우에만 의미 있음

즉, val이나 var 없이 생성자 매개변수를 선언하면, 그 값은 enum 상수의 생성 시점에서 일시적으로 전달되는 값일 뿐이고, 외부에 노출되거나 저장되지 않는다.