据我所知,在给定类中创建对象时,会为该特定对象分配内存。 但在这种情况下:
public class KindA {
KindB b = new KindB();
// rest of the code
}
public class KindB {
KindA a = new KindA();
// rest of the code
}
在这种情况下,当2个类创建彼此的对象时,在内存分配方面会发生什么?
答案 0 :(得分:4)
如果您尝试初始化其中一个类,那么您将获得StackOverflowError
,因为KindA
的初始化程序会创建一个类型为KindB
的新对象,因此初始化程序为KindB
会运行,会创建KindA
类型的新对象,并且KindA
初始化程序会再次运行,这会创建并初始化类型为KindB
的新对象,因此在......
这是一个无限递归,因此是stackoverflow。