“java decompiler”JD-Core 0.6.0 / JD-GUI 0.3.3反编译代码含义

时间:2012-07-17 18:56:30

标签: java decompiler

 MohrAboutBox.1 local1 = new ActionListener() {

我用JD GUI 0.3.3反编译了一个jar文件,我得到了这条对我来说毫无意义的行。 “.1”(点一),它引用的是什么?我试图重新编译,我从javac编译器得到一个错误,它说它不是一个声明该行。我该怎么办 ?我想我必须删除“.1”或者改为使用“this”或者某些变量,类或方法,我不知道为什么JD不能做那个工作。

class MohrAboutBox extends JDialog
{
  public MohrAboutBox(MohrControls paramMohrControls)
  {

    MohrAboutBox.1 local1 = new ActionListener() {
      public void actionPerformed(ActionEvent paramActionEvent) {
        MohrAboutBox.this.exit_dlg();
      }
    };

2 个答案:

答案 0 :(得分:3)

它指的是这是ActionListener中封闭的(匿名)类(实现MohrAboutBox)的实例,例如MohrAboutBox $1,将其更改为:

ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent paramActionEvent) {
        MohrAboutBox.this.exit_dlg();
    }
};

答案 1 :(得分:2)

原始来源中是匿名内部类;没有有效Java名称的类。 Java编译器将生成的类文件命名为ClassName$1ClassName$2。目前还不清楚为什么反编译器无法自行解决这个问题。你需要提供扩展内部类的真实类的名称 - 例如,ActionListener,在这种情况下 - 然后代码应该编译好。