写帮我写出带监听器的java版的事件与委托-猫叫老鼠跑
时间: 2024-05-16 15:12:32 浏览: 89
java一个监听器的例子
5星 · 资源好评率100%
好的,以下是带监听器的Java版事件与委托的示例代码,模拟猫叫老鼠跑的场景:
1. 创建事件类 CatShoutEvent.java:
```
import java.util.EventObject;
public class CatShoutEvent extends EventObject {
private String message;
public CatShoutEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
```
2. 创建监听器接口 CatShoutListener.java:
```
import java.util.EventListener;
public interface CatShoutListener extends EventListener {
void onCatShout(CatShoutEvent event);
}
```
3. 创建猫类 Cat.java:
```
import java.util.ArrayList;
import java.util.List;
public class Cat {
private List<CatShoutListener> listeners = new ArrayList<>();
public void addCatShoutListener(CatShoutListener listener) {
listeners.add(listener);
}
public void removeCatShoutListener(CatShoutListener listener) {
listeners.remove(listener);
}
public void shout() {
System.out.println("猫叫了一声!");
String message = "老鼠快跑!";
CatShoutEvent event = new CatShoutEvent(this, message);
for (CatShoutListener listener : listeners) {
listener.onCatShout(event);
}
}
}
```
4. 创建老鼠类 Mouse.java:
```
public class Mouse {
public void run(CatShoutEvent event) {
System.out.println("老鼠听到了猫叫,开始逃跑,猫喊的内容是:" + event.getMessage());
}
}
```
5. 创建测试类 Main.java:
```
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
Mouse mouse = new Mouse();
cat.addCatShoutListener(mouse::run);
cat.shout();
}
}
```
运行程序,输出结果:
```
猫叫了一声!
老鼠听到了猫叫,开始逃跑,猫喊的内容是:老鼠快跑!
```
说明事件与委托已经成功实现。当猫叫时,所有监听器都会收到通知,并执行相应的操作。在这个例子中,老鼠监听了猫叫事件,并在收到通知时逃跑。
阅读全文