不应该 类 让彼此的实例形成无限循环

Shouldn't having classes having instances of each other form an infinite loop

我有两个 类 相互创建实例,这可能会创建一个无限循环,但它们不是。 class A 先创建。

class A {

    B[] b = new B[9];

    A() {
        for (each) { // pseudo code
            b[each] = new B(this);
        }
    } 
}
class B {

    A a;

    B(A a) {
        this.a = a;
    } 
}

我的问题:为什么这段代码 不是 造成无限循环?

不会.. 你只是用

捕获了ClassA对象的引用
    this.a = a;

而不是创建一个新的。

您只有一个 A 实例(如果您在某处写 new A()),其中包含 9 个 B 实例,并且每个实例都包含对相同 A 的引用实例.

这会创建一个循环,因为 AB 的内存无法释放,因为它们相互引用。除此之外没有问题,没有 "infinite" 循环会导致任何重大问题,特别是没有无限循环创建越来越多的对象。

如果你写了

class B {

    A a;

    B() {
        this.a = new A();
    } 
}

那你就麻烦了。