Java编程语言语法

时间:2015-02-17 19:00:59

标签: java

首先,我必须承认我不会在网上搜索我的问题,因为我不知道哪些关键字符合我的问题。我只有几个小时的java经验,我遇到了以下语法:

public class Simulation extends JFrame {

    // some fields...

    public Simulation() {
    ActionListener listener1 = new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    InputStream pauseStream;
                    try {
                        pauseStream = new FileInputStream("/pause.wav");
                        PM = new AudioStream(pauseStream);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }



                    setPause(!isPause());
                    if(isPause()) {
                        button1.setText("Play");
                        MGP.stop(BGM);
                        MGP.start(PM);
                    } else {
                        button1.setText("Pause");
                        MGP.start(PM);
                        MGP.start(BGM);
                    }


                }
            };
    }
       // other methods
}

不幸的是,我不理解以下行的含义(我的意思是它的功能,类或类似的东西)ActionListener listener1=new ActionListener() {,因为我记得在C或C ++中没有对应关系。

如果我没错,通过ActionListener,listener1 = new ActionListener()应该创建一个ActionListener实例,但下面的花括号中的代码是什么?

1 个答案:

答案 0 :(得分:1)

大括号后面的代码是anonymous class的语法。这类似于您在C ++ 11中看到的lambda表达式,除了它定义了一个完整的类而不是一个函数(所以是一个匿名类而不是anonymous function)。