参数内的方法? Java 摇摆
Method inside Parameter? Java Swing
问题不是我的程序,而是 Java 的奇怪概念。下面的代码在做什么?该方法是否作为论坛方法的参数?我知道它实际上是在添加一个实际上没有定义太多的动作侦听器对象,然后它以某种方式将最后一个参数括号分隔在波浪形括号的后面?我不明白这是怎么回事。能否深入解释一下。
forums.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
这是一个anonymous class。你可以很容易地写成
public class ForumActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
// ...
forums.addActionListener(new ForumActionListener());
但是,通过使用这样的匿名 class:
forums.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
您创建了一个动作侦听器,它是未命名(匿名)class 的一个实例,它实现了 ActionListener 接口并覆盖了其中的一个方法。这使您可以轻松创建具有不同行为且仅使用一次的对象。
问题不是我的程序,而是 Java 的奇怪概念。下面的代码在做什么?该方法是否作为论坛方法的参数?我知道它实际上是在添加一个实际上没有定义太多的动作侦听器对象,然后它以某种方式将最后一个参数括号分隔在波浪形括号的后面?我不明白这是怎么回事。能否深入解释一下。
forums.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
这是一个anonymous class。你可以很容易地写成
public class ForumActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
// ...
forums.addActionListener(new ForumActionListener());
但是,通过使用这样的匿名 class:
forums.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// do something
}
}
您创建了一个动作侦听器,它是未命名(匿名)class 的一个实例,它实现了 ActionListener 接口并覆盖了其中的一个方法。这使您可以轻松创建具有不同行为且仅使用一次的对象。