首先,我必须承认我不会在网上搜索我的问题,因为我不知道哪些关键字符合我的问题。我只有几个小时的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实例,但下面的花括号中的代码是什么?
答案 0 :(得分:1)
大括号后面的代码是anonymous class的语法。这类似于您在C ++ 11中看到的lambda表达式,除了它定义了一个完整的类而不是一个函数(所以是一个匿名类而不是anonymous function)。