“静态合成”的含义是什么?

我正在查看从Java字节码获得的一些反汇编代码。我看到一些声明如下:

.method static synthetic access$0()Lcom/package/Sample;

我无法弄清楚或是什么意思。有人可以帮我理解这部分吗?syntheticaccess$0


答案 1

在 java 语言中,内部类可以访问其封闭类的私有成员。但是,在 Java 字节码中,内部类的概念并不存在,并且私有成员不可访问。若要变通解决此问题,编译器将在外部类中创建综合访问器方法。我相信这就是你在这里看到的。 只是方法的名称。我不确定是什么,如果有的话。它可能只是对其他编译器隐藏该方法以确保封装。access$0synthetic


答案 2

合成领域 ,2)

编译器创建的字段,它将本地内部类链接到块的局部变量或引用类型参数。

另请参阅 JavaTM 虚拟机规范 (§4.7.6)Java 中的综合类


推荐