Java - 这些类是哪些类;这是匿名的内部类?

时间:2012-04-10 14:11:18

标签: java actionlistener inner-classes anonymous-inner-class

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

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 个答案:

答案 0 :(得分:10)

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

这与

之间的区别相同
myList.add(new String("myString"));

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

它与匿名类无关。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

像Richante说的那样,他们都是。

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

答案 3 :(得分:0)

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