[Kotlin] What's new in Kotlin 1.5.0 #2 - Sealed interface

Chloe Choi·2021년 11월 28일
0

Kotlin

목록 보기
11/11

Value class와 같이 소개된 Sealed interface 정리!

Sealed interface

background(Sealed class의 한계)

Sealed class에 어떤 한계가 있어서 Sealed interface가 나왔을까?

Sealed class는 특별한 form의 abstract class이다. 따라서, 하나의 sealed class만 상속받을 수 있다.

이런 한계를 극복하기 위해 더 유연한 Sealed interface가 소개되었다. 다만, interface의 특성상 common property와 function은 public visibility를 갖게 된다. 이런걸 원치 않는 경우가 아니라면 더 유연한 Sealed interface를 쓸 수 있게 되었다!

What

sealed modifier를 interface에 사용 시 class에 사용한 것과 같은 방식으로 동작한다. 따라서, 다음과 같이 exhaustive when expression을 작성할 수 있다.

sealed interface Polygon
class Rectangle: Polygon
class Triangle: Polygon

fun draw(polygon: Polygon) = when (polygon) {
    is Rectangle -> // draw
    is Triangle -> // draw
    // else is not needed
}

Sealed interface의 구현은 컴파일 타임에 다 알게 된다. when 구문에서 모든 가능한 구현이 모두 커버되었기 때문에 정상적으로 빌드 된다!

profile
똑딱똑딱

0개의 댓글