1
 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();
      }
    };
4

2 回答 2

3

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

ActionListener listener = new ActionListener() {
    public void actionPerformed(ActionEvent paramActionEvent) {
        MohrAboutBox.this.exit_dlg();
    }
};
于 2012-07-17T19:02:05.257 回答
2

它是原始源代码中的匿名内部类;没有有效 Java 名称的类。Java 编译器将生成的类文件命名ClassName$1ClassName$2. 目前还不清楚为什么反编译器不能自己解决这个问题。您需要提供扩展内部类的真实类的名称——即,ActionListener在本例中为 ——然后代码应该可以正常编译。

于 2012-07-17T19:02:19.640 回答