You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反编译后TestClass的匿名内部类为何显示为AnonymousTestApp$1而非TestClass$1?

匿名内部类命名为AnonymousTestApp$1而非TestClass$1的原因

Java编译器对匿名内部类的命名规则非常明确:匿名内部类的名称由它所在的外部类名称,加上$和递增的数字序号组成,和它继承的父类或实现的接口完全无关。

在你的代码里,匿名内部类直接定义在AnonymousTestApp类的main方法作用域内,所以编译器会给它分配AnonymousTestApp$1这个名称——数字1表示这是AnonymousTestApp类中定义的第一个匿名内部类。

TestClass只是这个匿名类继承的父类,它的名字不会影响匿名类的命名逻辑。如果在AnonymousTestApp里再定义第二个匿名内部类(不管继承什么类/接口),它的名称会是AnonymousTestApp$2,以此类推。

你可以检查编译后生成的class文件,会看到AnonymousTestApp$1.class这个文件,这就是对应匿名内部类的字节码文件,常量池中显示的名称和这个文件名完全一致。

内容的提问来源于stack exchange,提问作者ChpokHead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:35:27