Java中有access$002这样的变量意味着什么?
我有一个java jar,我已经在原始开发人员的许可下反编译过,我们可以使用它,直到他们能给我们一份源代码。我遇到了一个类的成员,该类看起来如下所示:Java中有access$002这样的变量意味着什么?,java,decompiling,Java,Decompiling,我有一个java jar,我已经在原始开发人员的许可下反编译过,我们可以使用它,直到他们能给我们一份源代码。我遇到了一个类的成员,该类看起来如下所示: Classname.access$002(Param1, Param2); 类名是正确的,但是access$002看起来不正确(除了名称access$204和结尾附加了其他数字之外,还有其他一些类似的名称),我想知道这在Java中是否意味着什么,或者是因为反编译操作不完整 我正在使用JD-GUI反编译这些类 还值得一提的是,至少在类名中,没有与
Classname.access$002(Param1, Param2);
类名是正确的,但是access$002看起来不正确(除了名称access$204和结尾附加了其他数字之外,还有其他一些类似的名称),我想知道这在Java中是否意味着什么,或者是因为反编译操作不完整
我正在使用JD-GUI反编译这些类
还值得一提的是,至少在类名中,没有与access$002方法具有相同签名的方法。access$XXX方法是从内部非静态类调用嵌套类的成员
public class DummyDummy {
private int x = 0;
private Inner i = new Inner();
private int foo(int a, int b) {
return a+b+x;
}
private class Inner {
void doIt() {
System.out.println(
// Here, DummyDummy.access$0(DummyDummy, int, int) is called
// which calls DummyDummy.foo(int, int)
foo(1,2) );
}
}
public static void main(String[] args) {
new DummyDummy().i.doIt();
}
}
这些链接可能会有所帮助:并且-第一个链接提到,它们可能是作为内部访问类的一部分创建的方法,以帮助JVM理解可以访问某些成员的类的分组。技术术语是合成访问器。它是一个生成的访问器