因此,當查看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