再探Java中的回调
其实上次已经揭示了回调的本质,这次只是用匿名内部类,真是穿个马甲我就不认识你啦!
- AddListener.java
package com.kanbujian.Event;
public interface AddListener {
public void add();
}
- WorkQueue.java
package com.kanbujian.Event;
import java.util.ArrayList;
import java.util.List;
/**
* 工作队列
* @author QT
*
*/
public class WorkQueue {
private List<AddListener> listeners=new ArrayList<AddListener>();
//添加监听器
public void addListener(AddListener addListener){
listeners.add(addListener);
}
//移出监听器
public void removeListener(AddListener addListener){
listeners.remove(addListener);
}
//事件发生,通知所有监听器
public void notifyAllListener(){
for(AddListener listener : listeners)
listener.add();
}
public void click(){
System.out.println("我被点击了");
//时间被触发,通知所有监听器
notifyAllListener();
}
}
- EventDemo.java
package com.kanbujian.Event;
public class EventDemo {
public static void main(String[] args) {
WorkQueue MyWorkQueue=new WorkQueue();
/*匿名内部类的实现*/
MyWorkQueue.addListener(new AddListener() {
@Override
public void add() {
System.out.println("内部类实现回调--->"+" 我知道你被点击了");
}
});
MyWorkQueue.click();
}
}