- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所有,我试图阅读一些从 jd-gui 生成的代码。如下所示。
public class agrPullingAgentStudy
{
private static final String PGPR_ID = "agrPullingAgentStudy";
private static Timer m_tmStudy = null;
private static Timer m_tmNonStop = null;
private static Timer m_tmRemove = null;
private static String m_szManual = "";
private static String m_szProcRule = "";
private static String m_szExecHosp = "";
private static HashMap<String, HashMap> m_hRemoteAll = new HashMap();
private static HashMap<String, String> m_hProcRule = null;
private static int m_nImageAfterMins = -120;
private static boolean m_bDoProcess = false;
private static Date m_dAliveDT = new Date();
private static final String LINE_SEP = System.getProperty("line.separator");
....
private class dcmStudySchedule
extends TimerTask
{
public void run()
{
String FUN_ID = "runStudySchedule";
StringBuffer szBuffer = new StringBuffer();
agrPullingAgentStudy.access$002(new Date());
...
}
....
agrPullingAgentStudy.access$402(agrPullingAgentStudy.m_szExecHosp.substring(0, agrPullingAgentStudy.m_szExecHosp.length() - 1));
...
}
}
类agrPullingAgentStudy
包含一个名为dcmStudySchedule的内部类。和内部类中。
我无法理解的是我已经知道的 access$xxx
这是因为如果内部类尝试访问外部类成员,那么生成的代码将使用 access$xxx
来表示这种代码。我只是想知道是否有任何解决方法可以解决此问题。或者我怎样才能理解这段代码?谢谢。
最佳答案
以下代码片段将生成您的反编译源代码。
import java.util.Date;
import java.util.TimerTask;
public class agrPullingAgentStudy {
private static Date m_dAliveDT = new Date();
private class dcmStudySchedule extends TimerTask {
public void run() {
m_dAliveDT = new Date();
}
}
}
要了解agrPullingAgentStudy.access$002(new Date())
,在字节码级别进行一些调查会很有帮助。
首先编译源代码javac agrPullingAgentStudy .java
。它生成两个 *.class
文件。 agrPullingAgentStudy.class
和 agrPullingAgentStudy$dcmStudySchedule.class
。 (好吧,到目前为止没有什么惊喜)。
为了从 dcmStudySchedule
类访问变量 m_dAliveDT
,编译器会在 agrPullingAgentStudy
中生成一个合成方法。签名是static Date access$002(Date var0)
。
如何得出这个结论? ...简单:使用javap
。
javap -c -v agrPullingAgentStudy.class
显示生成的字节码
static java.util.Date access$002(java.util.Date);
descriptor: (Ljava/util/Date;)Ljava/util/Date;
flags: ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
0: aload_0
1: dup
2: putstatic #1 // Field m_dAliveDT:Ljava/util/Date;
5: areturn
#1
指的是常量池中的索引(上面的javap
命令也会显示)
Constant pool:
#1 = Fieldref #5.#21 // agrPullingAgentStudy.m_dAliveDT:Ljava/util/Date;
...
作为 Java 源代码,它看起来像
static Date access$002(Date d) {
m_dAliveDT = d; // putstatic #1
return d; // areturn
}
关于java - 如何理解jd-gui生成的合成访问器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909122/
Java Decompiler (JD) 通常被推荐为一个很好的 Java Decompiler。 JD-Eclipse是京东的Eclipse插件。 我在几台不同的机器上运行插件时遇到了问题。每当我试
MohrAboutBox.1 local1 = new ActionListener() { 我用 JD GUI 0.3.3 反编译了一个 jar 文件,我得到了这行,这对我来说毫无意义。 “.1”(
**我想在ubuntu终端中打开open-in-jd-gui.sh这个文件或在eclipse中执行。我有一些java类文件。但是在Windows中我知道。但是在ubuntu中如何执行这个文件。如何在u
我已经通过JD GUI Tool将类文件转换为源代码。我使用 JD-GUI 版本 0.3.5 打开 jar 文件,然后打开文件夹并单击“保存所有源”。源码中有注释,例如: /* */ /*
我正在尝试打开 jd gui。我正在为 Windows 使用 .jar 版本。当我双击 jar 时,屏幕上会出现一个咖啡图标,但没有其他任何反应。我之前尝试重新安装 java,但结果相同。顺便说一句,
我在工作中一直使用 .jd 文件,在我的本地计算机上构建它以将其转换为 html... 但是,我仍然对 .jd 文件的用途感到困惑?我做了一些研究,其定义是:“Javadoc 是一种从代码中的 Jav
我正在使用 IntelliJ Idea 12 和 13。我们没有源代码,所以我们需要反编译字节码来理解逻辑。 我已经安装了 jd-intelliJ 插件,它似乎工作正常,但我没有能力在反编译代码中放置
想知道是否有人成功使用 JDEdwards XMLInterop 功能。我已经使用它有一段时间了(使用一个简单的 PInvoke,稍后将发布代码)。我正在寻找是否有更好和/或更强大的方法。 谢谢。 最
平均而言,使用 JD Edwards 精通开发需要多长时间?容易学吗?有什么先决条件吗? 最佳答案 您可以从 JD Edwards EntepriseOne 开发人员指南开始,了解对象管理工作台、表格
当使用 JD-GUI 查看 jar 文件时,我不断收到某种显示错误。它似乎用符号 ��� 替换变量名/标识符(在 JD-GUI 中看起来像一个红色雪人,附图)。知道如何解决这个问题吗?我尝试用谷歌搜索
我在 jd-gui 中打开了一个 jar 文件,但是当我尝试保存所有资源时,它停止工作。不知道去哪里找jd-gui的日志。 如何保存所有反编译的源文件? 最佳答案 使用文本编辑器打开“jd-gui.c
我想反编译一个 apk 文件以查看其源代码的某些部分,但是当我到达我感兴趣的部分时,JD-GUI 给出了以下反编译代码 /* Error */ public void loginV2(Cont
有没有一种简单/有效的方法可以在 Jd 中进行 asof 连接?例如,给定包含时间/测量列的表 A 和 B,查询 A.time、A.measurement、B.measurement,其中 B.mea
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
这个问题我遇到过好几次了。每当我反编译某些东西并使用 JD-GUI 保存所有源代码时,它都会在每一行前面加上一个 block 注释,并在方法主体中插入代码的行号。这是我刚刚反编译的 jar 中的一个示
关闭。这个问题需要更多 focused 。它目前不接受答案。 想要改进这个问题?更新问题,使其只关注 editing this post 的一个问题。 关闭 4 年前。 Improve this q
在哪里可以找到 EquipmentManager 的完整 API 文档?官方/非官方文档和书籍一直指向 javadoc 包 (JP170001,J1700001,J1700002)我找不到。 P.S
我有很多类(class)没有附加来源。我正在使用 JD,它在大多数情况下工作得很好,但在几个文件中,它对行重新对齐的移动太多,从某个点开始并保持 X 行的恒定移动。即使注释中有行号,在调试过程中也是非
我目前正在尝试调试我们的 Web 应用程序的问题 - 我可以在日志中看到一条错误消息,但我无法确定它的来源,尽管我怀疑它来自关闭的类提供的其中一个类-我们使用的来源电子商务平台。 我有 JD-Ecli
我使用 dex2jar 从 apk 中获取 jar 并使用 JD-GUI 查看它。 但我注意到有如下标签符号, if (this.data.length != 7)
我是一名优秀的程序员,十分优秀!