当2个类创建彼此的对象时会发生什么?

时间:2014-10-04 10:29:45

标签: java

据我所知,在给定类中创建对象时,会为该特定对象分配内存。 但在这种情况下:

public class KindA {
    KindB b = new KindB();
    // rest of the code
}
public class KindB {
    KindA a = new KindA();
    // rest of the code
} 

在这种情况下,当2个类创建彼此的对象时,在内存分配方面会发生什么?

1 个答案:

答案 0 :(得分:4)

如果您尝试初始化其中一个类,那么您将获得StackOverflowError,因为KindA的初始化程序会创建一个类型为KindB的新对象,因此初始化程序为KindB会运行,会创建KindA类型的新对象,并且KindA初始化程序会再次运行,这会创建并初始化类型为KindB的新对象,因此在......

这是一个无限递归,因此是stackoverflow。