微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当您有一个变量,如在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();
}

}

原文地址:https://www.jb51.cc/java/121868.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐