参数内的方法? Java Swing

时间:2015-09-23 02:25:10

标签: java swing actionlistener anonymous-class

我的程序不存在问题,但可以说有奇怪的Java概念。下面的代码是做什么的?该方法是作为论坛方法的参数吗?我知道它实际上添加了一个实际上没有定义太多的动作侦听器对象,然后它以某种方式分离了波浪括号后面的最后一个参数括号?我不明白这是如何工作的。请解释一下你是否可以深入了解。

forums.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {

    }
});

1 个答案:

答案 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接口并覆盖其中的方法。这使您可以轻松创建具有不同行为的对象,这些对象仅使用一次。