首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kotlin —  Sealed Classes(密封类)

Kotlin —  Sealed Classes(密封类)

作者头像
code_horse
发布于 2018-07-02 14:23:28
发布于 2018-07-02 14:23:28
7800
举报
文章被收录于专栏:Android NoteAndroid Note

我先翻译为密封类吧O__O "…。

什么是密封类?

官方文档:密封类用于表示受限类的层次结构,当一个值有一个有限的类型,但不能有任何其他类型。它们在某种意义上是枚举类的扩展:枚举类型的值的集合也受到限制,但是每个枚举常量只能作为一个单独的实例存在,而一个密封类的子类可以有多个可以包含状态的实例。

如何声明密封类?

只需要在class前面添加关键字sealed

代码语言:javascript
复制
sealed class Person{
    data class YellowPerson(val name:String):Person()
    data class WhitePerson(val name:String,age:Int):Person()
    object BlackCat:Person()
}

当在表达式中使用它们时,密封类的便捷就会体现出来。如果需要验证语句是否涵盖所有的情况,则不需要在语句中添加else。

代码语言:javascript
复制
fun name(person:Person):String=when(person){
  is Person.YellowPerson->person.name
  is Person.WhitePerson->person.name+person.age
  Person.BlackCat->Not A Person
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 什么是密封类?
  • 如何声明密封类?
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档