当你在Java中拥有类似访问$ 002的变量时,它意味着什么?

Ben*_*est 13 java decompiling

我有一个java jar,我已经使用原始开发人员的许可进行了反编译,我们将使用它直到他们可以获得源代码的副本.我遇到了类似于以下内容的成员:

Classname.access$002(Param1, Param2);
Run Code Online (Sandbox Code Playgroud)

类名是正确的,但访问$ 002看起来不正确(除了名称访问$ 204并且末尾附加了其他数字之外,还有其他几个这样的),我想知道这是否意味着Java中的任何内容或者是否是因为反编译操作不完整.

我正在使用JD-GUI来反编译类.

还值得一提的是,没有与访问$ 002方法具有相同签名的方法,至少在类Classname中.

kin*_*nak 20

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();
}

}
Run Code Online (Sandbox Code Playgroud)