[kotlin] 코틀린 sealed 클래스의 when 식 활용법

코틀린에서 sealed class는 특정 타입의 하위 클래스를 제한하는 방법을 제공합니다. sealed class를 사용하면 when 식을 통해 모든 하위 클래스를 다룰 때 컴파일러가 경고 없이 완전하게 처리하는 것이 가능합니다.

이번 포스트에서는 코틀린의 sealed classwhen 식을 어떻게 활용하는지 살펴보겠습니다.

1. sealed 클래스의 정의

먼저, sealed 클래스를 정의하는 방법을 알아봅시다.

sealed class Result
class Success(val message: String) : Result()
class Error(val error: Throwable) : Result()

위의 예제에서 Resultsealed class로 정의되었습니다. 그리고 SuccessErrorResult의 하위 클래스로 정의되어 있습니다. 이제 when 식을 이용해서 sealed class를 처리하는 방법을 살펴보겠습니다.

2. when 식을 이용한 sealed 클래스 처리

fun process(result: Result) {
    when (result) {
        is Success -> {
            println("Success: ${result.message}")
        }
        is Error -> {
            println("Error: ${result.error.message}")
        }
    }
}

위의 코드에서 process 함수는 Result를 파라미터로 받아서 when 식을 이용해 각 하위 클래스를 처리하고 있습니다. sealed class를 사용하면 모든 경우를 처리하는 else 브랜치가 필요 없으므로, 컴파일러가 필요한 경우 모든 하위 클래스를 다루는지 검증할 수 있습니다.

3. 장점

sealed class를 이용하면 상태나 이벤트와 관련된 여러 하위 클래스를 처리할 때 이점을 가질 수 있습니다. 이점으로는 다음과 같은 것들이 있습니다.

sealed class를 사용하면 코드를 더 안전하고 읽기 쉽게 만들 수 있습니다.

이상으로 코틀린의 sealed classwhen 식을 활용하는 방법에 대해 알아보았습니다. 여러분의 프로젝트에서 이 기능을 사용해 보는 것을 권장합니다.

참고: Kotlin Language Reference - Sealed Classes