Kotlin에서는 상황에 따라 Sealed Class와 Enum Class를 선택할 수 있습니다. 두 가지 모두 각기 다른 장점이 있으며, 사용 목적에 따라 더 적합한 선택이 달라질 수 있습니다. 다음은 각 클래스의 특징과 사용 시점을 비교한 것입니다.
Enum Class
상수 값들의 집합이 고정된 경우 (예: 요일, 방향, 상태 등).
간단한 상태나 값을 나타내야 할 때.
각 상수가 동일한 메서드나 속성을 가져야 할 때.
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
Sealed Class
데이터의 서브 타입을 나타내고 싶을 때 (예: 다양한 종류의 결과 값, 이벤트 등).
각 상태나 데이터 타입에 대해 다른 속성이나 메서드를 가질 때.
더 복잡한 데이터 모델을 필요로 할 때.
kotlin
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val exception: Exception) : Result()
object Loading : Result()
}
Enum Class는 미리 정의된 상수 값들의 집합을 표현하는 데 적합합니다.
Sealed Class는 더 복잡한 데이터 구조나 계층을 표현하고, 패턴 매칭을 안전하게 수행하는 데 유리합니다.
따라서, 상황에 따라 두 가지 중 적합한 것을 선택하면 됩니다. 간단한 상수 집합이라면 Enum Class를, 복잡한 데이터 구조와 패턴 매칭이 필요하다면 Sealed Class를 사용하는 것이 좋습니다.