Android(Kotlin)

Sealed Class

개복치 개발자 2023. 7. 15. 22:21

Sealed 클래스는 Kotlin에서 제공하는 특수한 클래스 유형 중 하나로, 계층구조를 가진 타입의 값 집합을 정의하면서 불필요한 값들을 제한할 수 있는 기능을 가집니다. Sealed 클래스를 사용하면 런타임 에러를 컴파일 타임 에러로 변경하여 버그를 더 일찍 찾을 수 있습니다.

여기에는 두 가지 주요한 구성요소가 있습니다.

Sealed 클래스: 기본 클래스를 선언하는데 사용되며, 이는 abstract이며 공용 생성자가 없습니다.

Sealed 클래스에 대한 하위 클래스: sealed 클래스의 모든 가능한 직접적인 하위 클래스를 나열합니다. 이러한 하위 클래스는 객체로 선언될 수도 있고 일반 클래스로 선언될 수도 있습니다.

Sealed 클래스는 다음과 같이 선언할 수 있습니다

 


위의 예제에서 Expr는 sealed 클래스입니다. 이는 Const, Sum, 그리고 NotANumber라는 세 가지 형태의 하위 클래스를 가질 수 있습니다.

Sealed 클래스를 사용하면 when 식을 사용할 때 다음과 같은 장점이 있습니다

 

 

여기서 when 식은 모든 가능한 경우를 커버하므로 별도의 'else' 절이 필요하지 않습니다. 새로운 하위 클래스가 추가되면, 컴파일러는 when 식이 그 클래스를 처리하도록 강제합니다. 이로 인해 코드의 안정성이 향상됩니다.

반면에, sealed 클래스를 사용하지 않을 경우, 새로운 하위 클래스를 추가하더라도 when 식을 수정하지 않으면 컴파일 타임에 오류가 발생하지 않습니다. 이 경우 런타임에 예상치 못한 결과나 오류가 발생할 수 있습니다. 따라서 sealed 클래스는 앱의 안정성을 높이는데 도움이 됩니다.

 

'Android(Kotlin)' 카테고리의 다른 글

liveData vs stateFlow  (0) 2023.09.15
의존성 주입이란?(DI)  (0) 2023.06.12
Compose surface wrapContentSize  (0) 2023.04.26
Compose clickable / padding  (0) 2023.04.26
Compose Size  (0) 2023.04.26