Kotlin 실드 클래스 입문서
다시 Kotlin을 사용할 때 작업을 즐겁게 해주는 이 언어의 뛰어난 기능이 기억납니다. 이 게시물에서는 봉인된 클래스 기능에 대한 빠른 입문서를 제공하고자 합니다.
새로운 기능이 아닙니다. Kotlin 및/또는 Android로 작업하는 대부분의 숙련된 엔지니어는 이미 이에 대해 알고 있을 것입니다. 하지만 다양한 경험과 배경을 가진 사람들이 Kotlin/Android 세계에 합류하고 있습니다. 그래서 제 생각에는 이 훌륭한 언어의 일부 "오래된"기능을 다시 방문할 가치가 있다고 생각합니다. 비록 경험이 적은 한 명의 엔지니어가 작업을 보다 효율적으로 만들 수 있는 무언가에 대해 배우는 데 도움이 되더라도 :)
더 이상 고민하지 않고 봉인된 클래스는 매우 특정한 수의 하위 클래스를 가질 수 있는 클래스입니다.
이것은 어디에 유용합니까?
enum
를 정의한 거의 모든 엔지니어는 (적어도) 일부 열거형 값에 대해 일부 추가 데이터를 저장해야 했습니다. 이 문제에 대한 가장 추악한 솔루션은 특정 열거형 값이 주석과 함께 활성화될 때만 사용되는 변수의 형태로 제공됩니다.// ONLY filled when "status == DISCONNECTED"
var reason = ""
봉인된 클래스는 이 매우 일반적인 사용 사례(다른 것들 중에서)에 대해 매우 우아한 솔루션을 제공합니다. 봉인된 클래스에는
enum
의 미리 정의된 값과 유사하게 매우 특정한 수의 하위 클래스가 있으므로 필요한 경우에만 "enum"값 + 데이터를 그룹화할 수 있습니다.sealed class Status { // 1.
object Unknown : Status() // 2.
class Disconnected(val reason: String? = null) : Status() // 3.
object Connecting : Status()
object Connected : Status()
}
object
키워드 대신 class
키워드를 사용하여 싱글톤을 만들 수 있습니다. 하위 클래스에 특정한 비즈니스 로직의 경우 스마트 캐스팅과 함께 강력한
when
명령문을 사용하십시오.when (status) {
is Status.Unknown -> [...]
is Status.Disconnected -> // Access `it.status.reason`
is Status.Connected, is Status.Connecting -> [...]
}
다행히도 이것이 유용했고 앱에서 이를 사용하여 코딩 생활을 좀 더 즐겁게 만들 수 있습니다.
즐거운 코딩하세요!
Reference
이 문제에 관하여(Kotlin 실드 클래스 입문서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rockandnull/kotlin-sealed-class-primer-4eah텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)