Kotlin文档指出:
密封类可以有子类,但是必须在与密封类本身相同的文件中声明所有子类。(在Kotlin 1.1之前,规则更加严格:类必须嵌套在密封类的声明中)。
诚然,这是一个必要但不充分的条件,但它确实意味着(由于没有任何相反的情况),我可以在同一个文件中的任何地方声明一个密封类的子类。
考虑到以下代码编译:
//class Jungle {
sealed class Animal
class Tiger : Animal()
//}为什么以下内容不编译:
class Jungle {
sealed class Animal
class Tiger : Animal()
}第二个片段给出了Intellij插件版本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实际上,这里的第二个错误消息似乎与文档直接矛盾。
https://stackoverflow.com/questions/63211499
复制相似问题