你可以在 Kotlin 中扩展一个内部类,而不扩展它的外部类吗?
在 Java 中你可以这样做:
class Outer {
class Inner {
}
}
class ExtendedClass extends Outer.Inner{
ExtendedClass(Outer outer) {
outer.super();
}
}
所以我希望在 Kotlin 中你可以写这样的东西:
class ExtendedClass(outer: Outer): Outer.Inner(outer: Outer) {
}
不幸的是,这不起作用。
我知道你可以这样做:
class ExtendedOuter: Outer() {
inner class ExtendedInner: Inner(){
}
}
但这迫使你扩展外部类,这并不总是可取的。
这让我想到一个问题:
你可以在 Kotlin 中扩展一个内部类,而不扩展它的外部类吗?如果不是,为什么当非开放外部类包含开放内部类时,我们可以声明它们?
In Java you can do this:
class Outer {
class Inner {
}
}
class ExtendedClass extends Outer.Inner{
ExtendedClass(Outer outer) {
outer.super();
}
}
So I'd expect in Kotlin you write something like this:
class ExtendedClass(outer: Outer): Outer.Inner(outer: Outer) {
}
Unfortunately this doesn't work.
I know you can do this:
class ExtendedOuter: Outer() {
inner class ExtendedInner: Inner(){
}
}
but this forces you to extend the Outer Class which is not always desirable.
This brings me to the question:
Can you extend an inner class in Kotlin, without extending it's outer class? If not, why are we allowed to declare non-open outer classes, when they contain an open inner class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论