这是什么参考?
假设我有这个课程:
public class class1 extends Applet implements Runnable
{
private String s;
private URL u;
...
}
第二节课:
class TS extends Thread
{
private final class1 _$97913;
public TS(class1 paramclass1)
{
this._$97913 = paramclass1;
}
...
public void PostData()
{
...
class1.access$16(this._$97913, new Socket(class1.access$17(this._$97913), 80);
...
}
...
}
有人可以解释class1.access$16(this._$97913, new Socket(class1.access$17(this._$97913), 80);
如何从class1引用private URL u;
?
access$16
来自哪里?这叫什么,我在哪里可以了解更多?
好吧,这是反编译代码的结果,有没有办法将数字(access$16
,access$17
等)与原始变量或类相关联?从我所看到的,唯一的方法是手动这样做(即看到被引用的地方并猜测,因为'这个'类接收了一个URL,那么'this'必须与'that'变量相关联)?
没有找到相关结果
已邀请:
2 个回复
谦响局豢报
,
等)到原始变量或类?从我所看到的, 唯一的方法是手动完成(即看哪些被引用的地方和 猜测因为'this'类收到了一个URL,那么'this'必须与'that'变量相关联)? 如果从嵌套类(或其他方式,或从一个嵌套类到另一个嵌套类)访问私有方法或变量,则会创建
方法。它们由编译器创建,因为VM不允许直接访问私有变量。 如果反编译器允许这些方法调用保留在using类的重新创建的源代码中,那么它还应该让合成方法定义保留在已使用类的重新创建的源代码中。如果是这样,看看作为相关方法的接收者的类(在你的情况下为
),应该有这样的方法(
)。在此方法的代码中,您可以在此处查看访问哪个实际方法(或变量)。 如果反编译器删除了合成方法,这可能是一个错误,也可能是可配置的。也可能是你必须立即将所有类传递给它,然后它可以在任何地方放入正确的方法/字段 - 查看其文档。 如果您在方法调用的点之前有类(以及它们的超类,如果有的话),那么您应该拥有这些方法。 从您发布的片段中,
中应该有一个
和
方法(或者
是一个局部变量?)。 如果不是,也许你的反编译器试图更聪明,那么他应该。您可以查看
的输出以查看方法是否存在,以及整个字节码的
。或者使用另一个反编译器。
诞胃