因此,当查看lambda表达式并使用它们替换Java中的EventHandler的匿名内部类时,我遇到了一些让我停下来思考的匿名内部类。例如,写的东西,一个匿名内部类,通常实现的ActionListener当我们写在Java中使用接口的匿名内部类
myJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
//DO SOMETHING
}
});
我与这个混淆,是ActionListener的,所以我觉得这一定有必要做类似的接口...
myJButton.addActionListener(new myButtonListener implements ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
//DO SOMETHING
}
});
但这甚至没有编译。我想我的原因,虽然这是很明显,如果不是我们使用私有内部类,我们使用
private MyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//DO SOMETHING
}
}
myJButton.addActionListener(new MyButtonListener());
所以我的问题是:
1)为什么我们能够直接从创建一个匿名内部类一个接口,而不是必须通过实现接口的类来创建一个接口?
2)为什么我无法创建一个实现ActionListener的匿名内部类,而不是直接从它创建,如我在第二个代码片段中显示的那样?
在此先感谢您的回复!
您认为_anonymous_在这里表示什么? – 2014-10-27 05:30:27