密封修饰符在Kotlin中代表什么?

我对使用sealed修饰符有点困惑。

它有什么作用?

3 Solutions collect form web for “密封修饰符在Kotlin中代表什么?”

官方文档涵盖了这一点。

密封类具有受限inheritance层次结构:只有在它们内部声明的类或与它们在同一个文件中的类(因为Kotlin 1.1)可以是密封类的子类。

与expression式结合when ,这可以是有用的,这可以保证他们的分支彻底检查一个密封类的可能的子类。

这个修饰符主要用于限制创建子类的可能性,这意味着所有的直接子类都应该嵌套,这是一个例子:

 sealed class Animal { class Cow(val name: String) : Animal() } //It generates a compilation error class Horse : Animal() { } 

所以, sealed类不能在类之外有inheritance者。

其他的答案是好的,但我认为值得一提的是一个重要的观点:扩展一个密封类的子类的类可以放在任何地方,不一定在同一个文件中。 这一点很重要,因为密封类不一定意味着整个inheritance层次将在同一个文件中,除非每个子类都被sealed

您可以在官方的密封课程文档中阅读更多信息。

  • 从Java转换到Kotlin之后,Dagger的模块不工作
  • 将Java Parcel创建者代码转换为Kotlin
  • 匕首2活动不能提供@提供或@产生注释的方法
  • 使用List参数从Kotlin调用Java方法
  • Java不允许最终的默认方法..但是Kotlin?
  • 如何排序Kotlin MutableList
  • Kotlin,铸造function接收器
  • 我们如何快速返回Kotlin函数中的多个值?
  • 微软网络框架Kotlin
  • Kotlin,JPA和@Transient
  • 使用kotlin流从列表中获取一个随机项目
  • Kotlin language will be the best programming language for Android.