美文网首页禅与计算机程序设计艺术Kotlin专题Kotlin
Kotlin —  Sealed Classes(密封类)

Kotlin —  Sealed Classes(密封类)

作者: Kotyo | 来源:发表于2018-01-03 10:04 被阅读60次

    我先翻译为密封类吧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
    }
    

    相关文章

      网友评论

        本文标题:Kotlin —  Sealed Classes(密封类)

        本文链接:https://www.haomeiwen.com/subject/styqnxtx.html