67,541
社区成员
发帖
与我相关
我的任务
分享有关系
首先,三 理解错了,三 是事件监听管理者对监听器的管理(添加监听器)
Set<SnakeListener> listener = new HashSet<SnakeListener>();
是事件监听管理者的一个监听器集合,用于保存需要回调的监听器
public void addSnakeListener(){}是事件监听管理者的一个方法,用于把需要回调的监听器保存到listener集合中
当事件监听管理者监测到某个事件被触发或者自己触发(如果事件监听管理者本事是事件发生源)后,会调用
Snake snake = new Snake(); //如果监听管理者本身是Snake对象,那么可以 Snake snake = this;
for (SnakeListener sl : listener) { //然后调用监听器集合的所有监听器
sl.snakemove(snake); //这样添加到事件监听管理者的监听器都会被回调
}
首先你要理解好这些对象的关系
假如 A是事件监听管理者,那么A拥有上面的二和三
B是监听器的某个实现,那么B实现 一
C是某个程序,它需要使用B,并且需要A触发某事件时调用B,那么
class C {
public static void main(String[] args) {
A a = new A();
SnakeListner b = new SnakeListener() {
public void snakemove(Snake snake) {System.out.println("A触发某事件时请调用我");}
};
a.addSnakeListener(b); //把监听器加入到事件源监听中
//这样A监测到某事件触发或者自己触发某事件后,就会调用b
}
}