|
|
1
3
请考虑以下代码:
上面的代码编译得很好,因为构造函数是在类A内部调用的。 如果类D试图在外部继承,它将不会编译。
如本页所述 Sealed class in Kotlin ,
似乎Kotlin只放宽了嵌套类的要求。 因此,以下代码在1.1+中可以正常工作,但在早期版本中会失败:
而在1.1之前的版本中需要以下代码,这涉及到私有构造函数。
因此,允许在类外部(但在同一个文件中)使用密封类的私有构造函数可以被视为一种增强,以使代码更干净。 |
|
|
2
3
您可以通过查看生成的字节码(您可以通过
所以那里
是
的非私有构造函数
您仍然不能子类
至于Java客户端代码,您不能自己访问同一个构造函数,因为
我的猜测是包私有可见性可能只在编译时强制执行,这就是Kotlin编译器能够输出与上面的代码片段相对应的字节码的原因(但不完全确定)。 |
|
|
A. Cedano · 如何在UIState中包含错误案例? 1 年前 |
|
Murilo · Jetpack编写导航栏项目图标 1 年前 |
|
zplot · 使用具有抽象嵌套类的泛型时类型不匹配 1 年前 |