当您有一个变量,如在Java中访问$002时,意味着什么?

前端之家收集整理的这篇文章主要介绍了当您有一个变量,如在Java中访问$002时,意味着什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 java jar我已经反编译了原始开发者的权限,我们将使用,直到他们可以得到我们的源代码的副本.我遇到了类似于以下内容的类的成员:
Classname.access$002(Param1,Param2);

类名是正确的,但是访问$002看起来不正确(除了名字访问$204,其他数字附加到最后,还有其他几个),我想知道这是否意味着Java中的任何东西,或者是因为反编译操作是不完整的.

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

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

解决方法

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

}

猜你在找的Java相关文章