不熟悉的 Java 语法 '(new MyClass.1())'
unfamiliar Java syntax '(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));
...
}
Q1。 “.1”和“.5”的含义和作用是什么?
Q2。 “(这个)”是做什么的?是 shorthand for (this.param1, this.param2,...)?
Q3。这种语法是专门用于匿名对象实例化、javax.swing 组件、Runnables、多线程等,还是一般用途?
Q4。此代码的另一个版本使用更熟悉的语法。这些语句在语法上是否等同于上述语句(尽管构造函数调用和事件行为不同)?
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 的字节码。如果你是"maintaining"反编译代码....祝你好运!您将需要从上下文和/或通过硬方式对字节码进行逆向工程来弄清楚代码 的含义 是什么。
我维护的一些代码使用了不熟悉的语法。我无法在 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));
...
}
Q1。 “.1”和“.5”的含义和作用是什么?
Q2。 “(这个)”是做什么的?是 shorthand for (this.param1, this.param2,...)?
Q3。这种语法是专门用于匿名对象实例化、javax.swing 组件、Runnables、多线程等,还是一般用途?
Q4。此代码的另一个版本使用更熟悉的语法。这些语句在语法上是否等同于上述语句(尽管构造函数调用和事件行为不同)?
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 的字节码。如果你是"maintaining"反编译代码....祝你好运!您将需要从上下文和/或通过硬方式对字节码进行逆向工程来弄清楚代码 的含义 是什么。