[Kotlin] 열거와 sealed 클래스

[원본 링크]

열거
열거는 자바와 별 차이가 없다.
차이라고 해봐야 enum 대신 enum class를 쓴다는 점이다.
따지자면 더 있긴한데 굳이... 쓸 일은 없을것같다. image

image


한정(sealed) 클래스
sealed 클래스는 열거의 확장형이라 할 수 있다.
단순 정수 형식의 값이 아니라 클래스들을 정의해서 멤버로 넣을 수 있다.
멤버 클래스는 한정클래스를 상속받도록 한다. image

image

사실 일반 클래스를 두고 거기에 멤버를 넣는거랑 기능상으로 큰 차이는 없다.
다만 이건 멤버클래스가 다 추적이 되기 때문에 when을 사용할 경우에 else 레이블을 둘 필요가 없다는게 장점이다.
게다가 멤버클래스가 when 레이블에 빠진게 있을 경우도 철저하게 검사하서 에러를 던져준다.

그리고 유의할 점으로, 한정클래스는 추상클래스라 자체적인 생성은 불가하도록 되어있다.


참조
https://kychul98.tistory.com/m/92
https://zerogdev.blogspot.com/2019/06/kotlin-inner-sealed-class.html?m=1