我有一个java jar,我已经使用原始开发人员的许可进行了反编译,我们将使用它直到他们能够获得源代码的副本。我遇到了类似于以下内容的成员:
Classname.access$002(Param1, Param2);
Classname是正确的,但是 access $ 002 看起来不正确(除了名称 access $ 204 以及其他数字附加到结束),我想知道这是否意味着Java中的任何内容,或者是因为反编译操作是不完整的。
我正在使用JD-GUI来反编译类。
还值得一提的是,没有与 access $ 002 方法具有相同签名的方法,至少在类Classname中。
答案 0 :(得分:19)
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();
}
}