1

我已经阅读了几篇相互矛盾的在线文章。我认为这将是匿名内部类的一个示例:

button.addActionListener(new ActionListener() {
    public void actionPerfored(ActionEvent e) {
       // do something.
    }
});

但是,我也看到这被描述为一个匿名内部类:

ActionListener myListener = new ActionListener() { 
    public void actionPerformed(ActionEvent event) {
          // do something.
    }
};
button.addActionListener(myListener);

哪个是哪个,为什么?谢谢!

4

4 回答 4

10

他们俩都是。第二个只是在添加为动作侦听器之前分配给一个变量。

这与两者的区别相同

myList.add(new String("myString"));

String s = new String("myString");
myList.add(s);

它与匿名类无关。

于 2012-04-10T14:12:27.920 回答
0

两者都是匿名内部类。在第二种情况下,您存储对匿名类的引用,以便稍后可以调用它的一些方法。

于 2012-04-10T14:13:19.900 回答
0

就像 Richante 说的,他们都是。

想想看,它们都是未命名的,并且是在另一个类中定义的。

于 2012-04-10T14:14:38.413 回答
0

两者实际上都是匿名内部类的示例。在第一个示例中,将参数传递给 addActionListener() 方法时提供了匿名内部类。在第二个示例中,创建了对匿名内部类的引用。

于 2012-04-10T14:16:54.480 回答