为什么此Java代码会产生堆栈溢出错误?

为什么此Java代码会产生堆栈溢出错误?,第1张

为什么此Java代码会产生堆栈溢出错误?

两者都需要生成一个

StackOverflowError
。当包含此行时:

static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");

GenerateStackOverflow
首次访问该类时,将创建实例

不包括此行:

final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");

一切都很好。但是这条线很关键。每次

GenerateStackOverflow
创建的实例时,它都会尝试初始化其成员变量
E2
-另一个
GenerateStackOverflow
对象。然后,
实例将
E2
初始化为另一个
GenerateStackOverflow
对象。这一直持续到
StackOverflowError
出现a


如果包括第二行,但不包括第二行,则不会创建任何实例,并且永远不会输入无限递归



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5130797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存