拥有此代码:
public final class A {
public final class B {
}
public A(B b) {
}
}
问题:
A
的实例,则无法创建B
的实例。B
的实例,则无法创建A
的实例。如果不更改代码且没有反射,如何创建A
的实例?
答案 0 :(得分:9)
您可以使用null
:
new A(null);
拥有A
对象后,您也可以创建B
对象:
A a = new A(null);
B b = a.new B();
答案 1 :(得分:3)
要扩展MC Emperor的答案,您还可以使用非A
的实例创建B
的实例:
A a1 = new A(null);
B b1 = a1.new B();
A a2 = new A(b1);
并且在一个班轮中:
A a = new A(new A(null).new B());