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();
}
};发布于 2012-07-18 03:02:05
它指的是这是MohrAboutBox中封闭的(匿名)类(实现ActionListener)的一个实例,例如MohrAboutBox $1,将其更改为:
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent paramActionEvent) {
MohrAboutBox.this.exit_dlg();
}
};发布于 2012-07-18 03:02:20
它是原始源代码中的一个匿名内部类;一个没有有效Java名称的类。Java编译器将生成的类文件命名为ClassName$1、ClassName$2。目前还不清楚为什么反编译器不能自己解决这个问题。您需要提供从中扩展内部类的实际类的名称--也就是本例中的ActionListener --然后代码应该可以很好地编译。
https://stackoverflow.com/questions/11529021
复制相似问题