[英]Why can't I declare a nested class that is a subclass of a sealed class?
Kotlin 文档指出:
密封的 class 可以有子类,但所有子类都必须在与密封的 class 本身相同的文件中声明。 (在 Kotlin 1.1 之前,规则更加严格:类必须嵌套在密封类的声明中)。
诚然,这是一个必要但不充分的条件,但它确实暗示(没有任何相反的东西)我可以在同一个文件的任何地方声明一个密封的 class 的子类。
鉴于以下代码编译:
//class Jungle {
sealed class Animal
class Tiger : Animal()
//}
为什么以下内容无法编译:
class Jungle {
sealed class Animal
class Tiger : Animal()
}
第二个片段给出了 Intellij Kotlin 插件版本1.3.72-release-IJ2020.1-5
的以下错误:
Error:(3, 20) Kotlin: Cannot access '<init>': it is private in 'Animal'
Error:(3, 20) Kotlin: This type is sealed, so it can be inherited by only its own nested classes or objects
事实上,这里的第二条错误信息似乎与文档直接矛盾。
它有一个未解决的问题,它还指出了误导性的诊断信息。 但似乎围绕它的谈话消失了。
Also, this Sealed class inheritance proposal from 4 years ago leaves the matter of sub-classing a nested sealed class by a class on the same level as an open question
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.