Kotlin?—? Sealed Classes(密封類)

我先翻譯為密封類吧O__O "…。

什么是密封類?

官方文檔:密封類用于表示受限類的層次結構,當一個值有一個有限的類型,但不能有任何其他類型。它們在某種意義上是枚舉類的擴展:枚舉類型的值的集合也受到限制,但是每個枚舉常量只能作為一個單獨的實例存在,而一個密封類的子類可以有多個可以包含狀態的實例。

如何聲明密封類?

只需要在class前面添加關鍵字sealed

sealed class Person{
    data class YellowPerson(val name:String):Person()
    data class WhitePerson(val name:String,age:Int):Person()
    object BlackCat:Person()
}

當在表達式中使用它們時,密封類的便捷就會體現出來。如果需要驗證語句是否涵蓋所有的情況,則不需要在語句中添加else。

fun name(person:Person):String=when(person){
  is Person.YellowPerson->person.name
  is Person.WhitePerson->person.name+person.age
  Person.BlackCat->Not A Person
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容