如何初始化从内部类继承的类?为什么foo1.this()无法编译?
class Foo1 {
class Inner {
}
}
class Foo2 extends Foo1.Inner {
//Foo2(Foo1 foo1) {foo1.this();} //won't compile
Foo2(Foo1 foo1) {foo1.super();}
}
最佳答案
我不确定我是否理解foo1.this();
应该做什么。也许您正在尝试调用Inner
的默认构造函数。由于Inner
不是一个静态类,因此它没有无参数构造函数。看起来只有那样。实际上,它具有一个带有Foo1
参数的构造函数,该参数包含对其父对象的引用。
但是,对foo1.super()
的调用将正常工作。它将使用Inner
作为隐式父引用调用新foo1
实例的构造函数。也就是说,新的Inner
实例将绑定到给定的Foo1
实例。
正如其他人指出的那样,您可能会导致Inner
类成为静态类,在这种情况下,它不包含对Foo1
实例的隐式引用。然后,您可以简单地在super();
构造函数中调用Foo2
。
关于java - 如何初始化从内部类继承的类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10584452/