有时候我想要一个简单的通用侦听器而不定义自己的类。在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是否为任何字符(如SPACE)定义了常量?
- 2. 如何在android中创建自定义侦听器到文件
- 3. Oracle AQ - 如何确定一个侦听器是否正在侦听队列
- 4. 在android框架上,是否有任何类中定义了常见的HTTP HEADER
- 5. 如何在Android中定义自定义事件和事件侦听器?
- 6. 如何删除自定义侦听器?
- 7. 这是否符合您的侦听器对象的定义?
- 8. Android - GPS侦听器
- 9. 在自定义按钮类中定义动作侦听器
- 10. 确定服务器是否在给定端口上侦听
- 11. 如何为变量android创建自定义侦听器?
- 12. android如何让侦听器自定义变量?
- 13. WCF ServiceHost是否充当侦听器或轮询器?
- 14. TypeScript自定义事件侦听器
- 15. React自定义事件侦听器
- 16. Java:如何注册侦听JFrame运动的侦听器
- 17. Firebase侦听器在哪里侦听RAM或磁盘?
- 18. 如何在node.js(express.js)中创建自定义事件侦听器?
- 19. Android:定时后启动侦听器
- 20. 自定义ExceptionMappingInterceptor不侦听
- 21. iOS,检查http或https服务器是否正在侦听特定端口
- 22. 是否可以为数组中的每个对象定义事件侦听器?
- 23. 在Java代码中忽略focusLost(),SWT.Verify或其他SWT侦听器
- 24. 如何在Android Webview中侦听任何cookie更改
- 25. Lua Corona - 如何在滑动过程中侦听widget.newScrollView侦听器
- 26. 无法导入任务侦听器在单独的文件中定义
- 27. Android应用上的自定义事件侦听器
- 28. Android:是否有一个视图的.TranslationX()更改侦听器
- 29. Java中的简单焦点侦听器
- 30. 如何判断一个侦听器是否已经在运行?
基本上,这是我想要的。它存在吗? \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