class ABC {
int x;
static ABC y = new ABC();
}
public class XYZ {
public static void main(String[] args) {
ABC q = new ABC();
q.x = 5;
System.out.println(q.x);
}
}
有人可以解释代码运行时发生的一切(一步一步)吗?拥有自己类型的静态成员的类
此外,当static
关键字被删除之前,实例y
,StackOverflow发生错误。为什么在static
关键字存在时不会发生这种情况?
在此先感谢。
是你的家庭作业,你不明白这个代码准确吗? –
如果你删除了'static',那么每个'ABC'实例都有它自己的'y'字段,这意味着对于每个创建的ABC实例,''y'值需要一个新的'ABC'实例,所以它会创建一个新的'ABC'实例,它需要一个新的'y'值,因此它会创建一个新的'ABC'实例,它需要一个新的'y'值,因此它会创建一个新的ABC实例,新的'y'值,所以它创建一个新的ABC实例,它需要一个新的'y'值,所以它创建一个新的ABC实例,它需要一个新的'y'值,StackOverflowError! – Andreas
这就像试图不正确地使用SingleTon模式:p – WilomGfx