密封修饰符在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

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

  • Kotlin:如何在类中使用多个Generic?
  • BiMap /双向HashMap在Kotlin
  • 如何在实现Java接口时克服“相同的JVM签名”错误?
  • Kotlin三元条件运算符
  • 使用ubuntu终端添加jar到kotlin文件
  • 我怎样才能在Kotlin中得到一个随机数字?
  • Kotlin语法混乱:fun Foo.bar()=(...)
  • 在Kotlin中如何读取和解析json文件
  • 不明白如何使通量订阅在kotlin工作
  • 错误:无法解析版本的依赖关系'org.jetbrains.kotlin:kotlin-stdlib-jre7:jar'
  • Kotlin / Java - 测试数据库数据提供的REST API
  • Kotlin language will be the best programming language for Android.