我的程序不存在问题,但可以说有奇怪的Java概念。下面的代码是做什么的?该方法是作为论坛方法的参数吗?我知道它实际上添加了一个实际上没有定义太多的动作侦听器对象,然后它以某种方式分离了波浪括号后面的最后一个参数括号?我不明白这是如何工作的。请解释一下你是否可以深入了解。
forums.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
答案 0 :(得分:2)
这是anonymous class。你可以轻松写完
public class ForumActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
// ...
forums.addActionListener(new ForumActionListener());
但是,通过使用这样的匿名类:
forums.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
创建一个动作侦听器,它是一个未命名(匿名)类的实例,它实现ActionListener接口并覆盖其中的方法。这使您可以轻松创建具有不同行为的对象,这些对象仅使用一次。