코틀린에서 sealed class
는 특정 타입의 하위 클래스를 제한하는 방법을 제공합니다. sealed class
를 사용하면 when
식을 통해 모든 하위 클래스를 다룰 때 컴파일러가 경고 없이 완전하게 처리하는 것이 가능합니다.
이번 포스트에서는 코틀린의 sealed class
와 when
식을 어떻게 활용하는지 살펴보겠습니다.
1. sealed 클래스의 정의
먼저, sealed 클래스를 정의하는 방법을 알아봅시다.
sealed class Result
class Success(val message: String) : Result()
class Error(val error: Throwable) : Result()
위의 예제에서 Result
는 sealed class
로 정의되었습니다. 그리고 Success
와 Error
는 Result
의 하위 클래스로 정의되어 있습니다.
이제 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
를 이용하면 상태나 이벤트와 관련된 여러 하위 클래스를 처리할 때 이점을 가질 수 있습니다. 이점으로는 다음과 같은 것들이 있습니다.
- 모든 하위클래스를
when
식에서 다루는지 컴파일러가 검증 - 코드 가독성 향상
- 타입에 대한 안전성 확보
sealed class
를 사용하면 코드를 더 안전하고 읽기 쉽게 만들 수 있습니다.
이상으로 코틀린의 sealed class
와 when
식을 활용하는 방법에 대해 알아보았습니다. 여러분의 프로젝트에서 이 기능을 사용해 보는 것을 권장합니다.
참고: Kotlin Language Reference - Sealed Classes