有时候我想要一个简单的通用侦听器而不定义自己的类。在Java或Android中是否有预定义的“发生了什么,这里是一个字符串或对象或其他什么”?在Android或Java中是否定义了任何常规侦听器
2
A
回答
2
我曾经参与过的一个项目就是这样的。一旦一个类实现了“MyListener”接口来处理两种完全不同类型的事件,它会导致一些可怕的不可读和不可维护的代码。没有关注的分离,你不知道何时或如何调用该方法。
public interface GenericListener {
public void handleMyEvent(Object sourceObj, int eventCode);
}
//...later on there's some implementation
public void handleMyEvent(Object sourceObj, int eventCode) {
if (sourceObj == startDownloadButton && eventCode == MyButton.CLICKED) {
//... 20 lines of code to start download
} else if (sourceObj instanceOf DownloadStatus && eventCode == DownloadStatus.COMPLETE) {
//... 10 lines of code to display status
} else //... and on and on...
}
这不是你需要避免的那种代码重复。仅仅因为两个方法/接口共享相同的基本签名并不意味着它们应该合并成一个。我建议您创建完全自我记录的监听器接口,以了解它们何时以及如何使用它们。
2
0
如果你想避免定义一个监听器类,可以考虑直接在观察的定义回调方法:
abstract class MyWorker{
public MyWorker(){
//...
onComplete();
}
protected abstract void onComplete();
}
再后来重写它们:
new MyWorker(){
protected void onComplete(){
//..
}
}
显然,这是不是适合每情况。有时你需要一个真正的听课。
相关问题
- 1. Java侦听器在同步期间是否等待或丢弃?
- 2. Java是否为任何字符(如SPACE)定义了常量?
- 3. 如何在android中创建自定义侦听器到文件
- 4. Oracle AQ - 如何确定一个侦听器是否正在侦听队列
- 5. 在android框架上,是否有任何类中定义了常见的HTTP HEADER
- 6. 如何在Android中定义自定义事件和事件侦听器?
- 7. 在Java中创建自定义侦听器
- 8. 如何删除自定义侦听器?
- 9. 这是否符合您的侦听器对象的定义?
- 10. Android是否在连接或断开网络时提供任何侦听器或回调方法?
- 11. android在一个单独的线程中定义侦听器
- 12. 是否有任何Symfony侦听器套接字工作?
- 13. 任何方式来创建“状态”侦听器而不是“事件”侦听器?
- 14. Android位置侦听器经常拨打
- 15. Android - GPS侦听器
- 16. 在自定义按钮类中定义动作侦听器
- 17. 确定服务器是否在给定端口上侦听
- 18. android如何让侦听器自定义变量?
- 19. 如何为变量android创建自定义侦听器?
- 20. WCF ServiceHost是否充当侦听器或轮询器?
- 21. Flash是否预先定义了任何keyCode常量?
- 22. 动作侦听器:在Java中
- 23. 在Java中序列化侦听器
- 24. Oracle ODP是否使用Oracle侦听器?
- 25. Java:如何注册侦听JFrame运动的侦听器
- 26. ListView项目的自定义侦听器
- 27. 自定义侦听器为空
- 28. TypeScript自定义事件侦听器
- 29. 设置自定义事件侦听器
- 30. React自定义事件侦听器
基本上,这是我想要的。它存在吗? \t public interface SomethingHappenedListener { \t \t public void itHappened(Object object); \t} – 2011-06-12 22:28:25
MVC模型,观察者,Observable应该做你需要的东西 – Siddharth 2013-06-05 04:57:22