不熟悉的 Java 语法'(new MyClass.1())'



我维护的一些代码使用了不熟悉的语法。 我无法在 Java 文档中找到这种语法的示例。

public static void main(String[] args){ ... javax.swing.SwingUtilities.invokeLater(new MyClass.1()); ... }

public MyClass(a,m){ ... javax.swing.myJButton.addActionListener(new MyClass.5(this)); ... }

问题 1.".1"和".5"是什么意思和作用?

问题 2."(这("有什么作用? 它是(this.param1, this.param2,...(的简写吗?

问题 3.这种语法是专门用于匿名对象实例化、javax.swing 组件、Runnables、多线程等,还是通用

?问题 4.此代码的另一个版本使用更熟悉的语法。 这些语句在语法上是否等同于上述语句(尽管构造函数调用和事件行为不同(?

javax.swing.SwingUtilities.invokeLater(
new Runnable(){
public void run(){
new MyClass(a,m);
}
}
);

javax.swing.myJButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
myJTextField.grabFocus();
}
}
);

这只是无效的Java语法。 您可以通过阅读 JLS 自行确认这一点。

  • 在该位置,需要<identifier>
  • <identifier>不能以数字开头。

所以,基本上,你试图维护的东西不是有效的Java源代码。

我的猜测是,这是反编译器的输出,反编译器遇到了一些不知道如何反编译为 Java 的字节码。 如果您正在"维护"反编译代码....祝你好运! 您将需要从上下文中找出代码的含义和/或通过对字节码进行逆向工程来艰难的方式。

最新更新