【发布时间】:2014-07-30 12:33:30
【问题描述】:
所以我有一个关于 javac 生成的访问器(版本 1.7.0_65)允许内部类访问外部类的私有字段的问题。
首先,这里有一个短代码sn-p:
public class A {
private int f = 0;
class AA {
public int m() {
return f;
}
}
}
编译器在类 A 中生成一个访问器方法,以便方法 m 能够读取并返回 f 的值。
此访问器如下所示:
static int access$0(A);
flags: ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #12 // Field f:I
4: ireturn
我的问题是:为什么这个访问器是作为静态方法生成的?是否存在非静态方法不起作用的情况?
【问题讨论】:
-
@PatrickJAbareII 他的 IDE 没有生成任何东西,javac 是。
标签: java inner-classes accessor