すべて私はjd-guiから生成されたコードを読み込もうとしていました。それは以下のように見えます。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
です。この問題を解決するための回避策があるかどうかを知りたいだけです。またはこのコードをどのように理解できますか?ありがとう。
こんにちは、最適な説明をありがとう。あなたの例について#1はバイトコードで何を意味しますか?それは、それがそこに多くのメンバーがいる場合、どのような外部クラスの最初のメンバーを表すようですか? #番号が表すメンバーを知るには?ありがとう。 –
@ Joe.wang '#1'が定数プールのインデックスを参照しています。 'javap'の出力をよりよく理解するためには、[Javaファイルのフォーマット](http://(Java)の[Java Virutal Machine Sepecification](http://docs.oracle.com/javase/specs/) docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html)。 – SubOptimal
参考までに、Procyonの逆コンパイラは合成アクセッサをインライン化する必要があり、逆アセンブラはjavapが示す単純な定数プールインデックスよりも有用なメンバ参照を表示します。 CFRは合成アクセサでもうまくやっています。 –