Java编程语言语法
首先,我必须承认,我没有在网上搜索我的问题,因为我不知道哪些关键字与我的问题相匹配。我只有几个小时的java经验,并且我遇到了以下语法:Java编程语言语法,java,Java,首先,我必须承认,我没有在网上搜索我的问题,因为我不知道哪些关键字与我的问题相匹配。我只有几个小时的java经验,并且我遇到了以下语法: public class Simulation extends JFrame { // some fields... public Simulation() { ActionListener listener1 = new ActionListener() { @Override
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
}
<>遗憾的是,我不理解下面的行的含义(我是指它的函数、类或类似的东西)<代码> ActuistListListNe1=新ActualListNEnter(){< /Cord> >,因为,我记得C或C++中没有对应关系。
如果我没有错的话,通过ActionListener 1=new ActionListener()应该创建ActionListener实例,但以下方括号中的代码是什么?方括号后的代码是的语法。这类似于您在C++11中看到的lambda表达式,只是它定义了一个完整的类而不是一个函数(因此是匿名类而不是函数).@KonstantinV.Salikhov非常感谢,正如我之前所说的,我无法搜索它,因为我不知道这个事实的名称,但现在我通过一本入门书学习了它。你正在使用该代码创建一个匿名内部类对象。由于ActionListener是一个接口而不是一个具体的类,你不能简单地创建一个实例通过
new ActionListener()
,但必须从实现ActionListener的具体子类创建实例,这是一种简单的方法。之所以称为“匿名”,是因为创建的类没有名称,并且无法(轻松地)引用(虽然以这种方式创建的对象可以很容易地引用,因为您已将其分配给变量)。@Radiodef如我在问题中所说,我不知道如何在web或stackoverflow上搜索我的问题,因此我认为它不是一个复杂的问题