gpt4 book ai didi

java反编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:51 24 4
gpt4 key购买 nike

当使用 java 反编译器 (http://java.decompiler.free.fr/) 反编译特定的 jar 时,我得到了一些奇怪的代码,我无法识别是什么。有人能帮我吗?代码是这样的:

Foo.access$004(Foo.this);

或者这个

Bar.access$006(Bar.this);

否则

Baz.access$102(Baz.this, true)

access$004access$006access$102 这些方法是什么?

最佳答案

像这样的合成方法被创建来支持访问内部类的私有(private)方法。由于内部类不是初始 jvm 版本的一部分,访问修饰符无法真正处理这种情况。解决方案是创建额外的包可见方法,委托(delegate)给私有(private)实现。

public class Example {
private static class Inner {
private void innerMethod() { ... }
}

public void test() {
Inner inner = ...
inner.innerMethod():
}
}

编译会创建 Inner 类的新方法,如下所示:

static void access$000(Inner inner) {
inner.innerMethod();
}

然后像这样替换 test 方法中的调用:

Inner.access$000(inner);

静态 access$000 是包可见的,因此可以从外部类访问,并且在同一个 Inner 类中,它可以委托(delegate)给私有(private) innerMethod.

关于java反编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9379048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com