为什么在这种情况下会生成classname $ 1.class?

为什么在这种情况下会生成classname $ 1.class?,第1张

为什么在这种情况下会生成classname $ 1.class?

TestHolder
需要在中调用私有构造函数
Test
。但是它是私有的,实际上不能从另一个类中调用。因此,编译器发挥了作用。它
添加了一个
Test
仅知道的新的非私有构造函数!_该构造函数采用此匿名类的(未使用的)实例
Test
-没人知道它的存在。然后
TestHolder
创建的实例
Test
并调用
_该
构造函数,该构造函数是可访问的(默认保护)。

您可以使用

javap -c Test
(和
javap -c Test
,和
javap -cTest$TestHolder
)查看代码。实际上,它非常聪明!



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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存