[Android] Sealed Class , Enum Class 비교

kk_jang93·2024년 7월 25일
0

Kotlin에서는 상황에 따라 Sealed ClassEnum Class를 선택할 수 있습니다. 두 가지 모두 각기 다른 장점이 있으며, 사용 목적에 따라 더 적합한 선택이 달라질 수 있습니다. 다음은 각 클래스의 특징과 사용 시점을 비교한 것입니다.

Enum Class

특징

  • 상수 집합: Enum 클래스는 미리 정의된 상수 집합을 나타낼 때 유용합니다.
  • 단순성: 정의가 단순하고 직관적입니다.
  • 일반적인 사용: 열거형 상수 간에 비교하거나 특정 상수에 대한 작업을 수행할 때 적합합니다.
  • 상수 메서드: Enum 상수 각각에 메서드를 정의할 수 있습니다.

사용 시점

상수 값들의 집합이 고정된 경우 (예: 요일, 방향, 상태 등).
간단한 상태나 값을 나타내야 할 때.
각 상수가 동일한 메서드나 속성을 가져야 할 때.

예제

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}

Sealed Class

특징

  • 계층 구조: 서브 클래스들이 정의될 수 있으며, 이들 서브 클래스는 모두 같은 파일 내에 정의되어야 합니다.
  • 확장성: 더 복잡한 데이터 구조나 상태를 표현할 수 있습니다.
  • 패턴 매칭: when 절에서 사용할 때 모든 가능한 하위 클래스들을 체크하므로 안전성이 높습니다.
  • 불변성: 불변 데이터를 나타내는 데 유용합니다.

사용 시점

데이터의 서브 타입을 나타내고 싶을 때 (예: 다양한 종류의 결과 값, 이벤트 등).
각 상태나 데이터 타입에 대해 다른 속성이나 메서드를 가질 때.
더 복잡한 데이터 모델을 필요로 할 때.

예제

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를 사용하는 것이 좋습니다.

profile
앱개발을 사랑하는 개발자

0개의 댓글