公共构造函数,无法创建实例

时间:2017-10-25 11:23:53

标签: java inner-classes instances

拥有此代码:

public final class A {
    public final class B {
    }
    public A(B b) {
    }
}

问题:

  1. 如果没有A的实例,则无法创建B的实例。
  2. 如果没有B的实例,则无法创建A的实例。
  3. 如果不更改代码且没有反射,如何创建A的实例?

2 个答案:

答案 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());