猿问

不熟悉的 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' 和 '.5' 是什么意思?


Q2。'(this)' 有什么作用?它是 (this.param1, this.param2,...) 的简写吗?


Q3。这种语法是专门用于匿名对象实例化、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();

        }

    }

);


斯蒂芬大帝
浏览 143回答 1
1回答

SMILET

那只是无效的 Java 语法。您可以通过阅读JLS自己确认这一点。在那个位置,<identifier>需要一个。An<identifier>不能以数字开头。因此,基本上,您尝试维护的内容不是有效的 Java 源代码。我的猜测是这是一个反编译器的输出,反编译器遇到了一些不知道如何反编译为Java的字节码。如果您正在“维护”反编译代码....祝您好运!您需要从上下文和/或通过对字节码进行逆向工程来找出代码的含义。
随时随地看视频慕课网APP

相关分类

Java
我要回答