陌生的Java语法'(new MyClass.1())'

时间:2018-10-06 01:08:05

标签: java syntax equivalent

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

@IBAction func playVideo(_ sender: Any) { let movieId = "xLCn88bfW1o" let path = URL(string: "https://www.youtube.com/watch?v=\(movieId)") let video = AVPlayer(url: path!) let videoPlayer = AVPlayerViewController() videoPlayer.player = video present(videoPlayer, animated: true, completion: { video.play() }) }

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

Q1。 “ .1”和“ .5”是什么意思?

Q2。 “(此)”做什么?它是(this.param1,this.param2,...)的简写吗?

Q3。这种语法是专门用于匿名对象实例化,javax.swing组件,Runnables,多线程等的,还是通用的?

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

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

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

1 个答案:

答案 0 :(得分:1)

那只是无效的Java语法。您可以通过阅读JLS来自己确认。

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

因此,基本上,您要维护的内容不是有效的Java源代码。

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