贪吃蛇步骤中,蛇每移动一步实现一个监听,但我没有听明白怎么回事,现在放这里求解,希望大家给小弟解释下,谢谢了步骤如下: 一: interface SnakeListener { void snakemove(Snake snake);} // 我理解为是一个接口
二: Set<SnakeListener> listener = new HashSet<SnakeListener>(); // 我理解为是个泛型
三: public void addSnakeListener(){}//别人讲是个实现监听器的方法
我想问,这三个有什么关系吗? 我只知道监听器本来就是个接口类,但是把放到<SnakeListener>里面成啥了
二: Set<SnakeListener> listener = new HashSet<SnakeListener>(); // 我理解为是个泛型
三: public void addSnakeListener(){}//别人讲是个实现监听器的方法
我想问,这三个有什么关系吗? 我只知道监听器本来就是个接口类,但是把放到<SnakeListener>里面成啥了
解决方案 »
- struts2 s:property怎么输出百分比数字
- SSH项目开发,数据库做严谨的表间关系吗
- 神奇的@include
- FCKeditor怎么防止用户插入图片
- 怎么在 Tomcat 建 jdbc/ds 而不是 java:comp/env/jdbc/ds 的 JNDI 名呢?
- 如何在Eclipse中编写代码调用xml schema文件来动态生成xml document?
- Action 为什么不执行方法。
- 谁用过commons-codec?
- 问两个Struts的初级问题
- Eclipse 图标位置乱了
- spring aop 事务配置问题
- Struts2中的零配置(Zero Configuration),以及如何用COC来更好地简化Struts2的配置
首先,三 理解错了,三 是事件监听管理者对监听器的管理(添加监听器)
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
}
}
举个例子
A是某个宿舍管理员,Lz你是C,你去找某人,他不在宿舍,于是你想到,希望某人回到宿舍后让A通知你
,这样你就告诉A说"如果某人回来后叫我一声",这里就是C调用A.addSnakeLienter(b)方法,把你需要管理员监听到某个事件时要做的事情告诉管理员,其中事件就是某人回到宿舍,管理员要做的事情就是b,b需要实现监听器的接口方法,也就是“叫你一声”