【发布时间】:2018-06-27 04:57:25
【问题描述】:
如果我使用docs 中的示例,
class SomeActivity : AppCompatActivity() {
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
}
无法编译,报错:
Cannot access '<init>', it is private in 'Expr'.
但是,将其移到封闭类之外使其可以编译:
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
class SomeActivity : AppCompatActivity() {
}
为什么会这样?这是预期的行为吗?文档似乎没有提到这一点。
【问题讨论】:
-
认为这只是编译器的限制。从技术角度看,我不明白为什么不能嵌套密封类
-
对我来说更像是一个错误而不是限制。如果出于某种原因,至少应该修复该消息。
-
毕竟不是错误。