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();
}
};
答案 0 :(得分:3)
它指的是这是ActionListener
中封闭的(匿名)类(实现MohrAboutBox
)的实例,例如MohrAboutBox $1
,将其更改为:
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent paramActionEvent) {
MohrAboutBox.this.exit_dlg();
}
};
答案 1 :(得分:2)
原始来源中是匿名内部类;没有有效Java名称的类。 Java编译器将生成的类文件命名为ClassName$1
,ClassName$2
。目前还不清楚为什么反编译器无法自行解决这个问题。你需要提供扩展内部类的真实类的名称 - 例如,ActionListener
,在这种情况下 - 然后代码应该编译好。