(Kotlin/코틀린) enum vs sealed class 차이점 비교 - 언제 무엇을 써야 할까?

개요


1. 요약


2. enum은 사실 객체다

enum class Status {
    READY,
    LOADING,
    SUCCESS,
    ERROR
}

3. sealed class란?

sealed class UiState {
    object Loading : UiState()
    data class Success(val data: List<String>) : UiState()
    data class Error(val message: String) : UiState()
}

4. 가장 큰 차이: 데이터 포함 가능성


5. 표현력 차이


6. 비교 표

항목 enum class sealed class
목적 고정된 상수 집합 제한된 타입 계층
상태별 데이터 제한적 자유로움
표현력 단순 상태에 강함 복잡한 상태에 강함
when 분기 간단 타입별 데이터 활용 가능
UI 상태 관리 단순한 경우 적합 대부분 더 적합
액션/이벤트 모델링 부적합 적합
코드 양 적음 다소 많음


Related Posts