Java中有access$002这样的变量意味着什么?

Java中有access$002这样的变量意味着什么?,java,decompiling,Java,Decompiling,我有一个java jar,我已经在原始开发人员的许可下反编译过,我们可以使用它,直到他们能给我们一份源代码。我遇到了一个类的成员,该类看起来如下所示: Classname.access$002(Param1, Param2); 类名是正确的,但是access$002看起来不正确(除了名称access$204和结尾附加了其他数字之外,还有其他一些类似的名称),我想知道这在Java中是否意味着什么,或者是因为反编译操作不完整 我正在使用JD-GUI反编译这些类 还值得一提的是,至少在类名中,没有与

我有一个java jar,我已经在原始开发人员的许可下反编译过,我们可以使用它,直到他们能给我们一份源代码。我遇到了一个类的成员,该类看起来如下所示:

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理解可以访问某些成员的类的分组。技术术语是合成访问器。它是一个生成的访问器