class A {
B ob1 = new B();
}
class B {
A ob2 = new A();
}
class C {
A a = new A();
// I am getting a StackOverflowException here
}
我在评论的行上收到了 StackOverflowException
。我该如何解决这个问题?
最佳答案
您的方法存在的问题是,当您创建 A
的实例时,该实例必须创建 B
的实例,而 B
也必须创建 A< 的实例
创建 B
的实例...等等,直到堆栈溢出。
可能最直观的方法是用 getters/setters 来解决这个问题,比如
class A{
private B b;
public void setB(B b) { this.b = b; }
public B getB() { return b; }
}
class B{
private A a;
public void setA(A a) { this.a = a; }
public A getA() { return a; }
}
class Demo {
public static void main(final String[] args) throws Exception {
A a = new A();
B b = new B();
//let them see each other
a.setB(b);
b.setA(a);
}
}
关于java - 如何创建两个相互引用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219094/