java - 是否有在 Android 或 Java 中定义的任何通用监听器

标签 java android

有时我想要一个简单的通用监听器而不需要定义我自己的类。在 Java 或 Android 中是否存在预定义的“发生了某事,这里是一个字符串或对象或其他任何东西”?

最佳答案

我参与的一个项目就是这样。一旦一个类实现了“MyListener”接口(interface)来处理两种完全不同的事件,它就会导致一些可怕的不可读和不可维护的代码。缺乏关注点分离,您不知道何时或如何调用该方法。

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...
}

这不是您需要避免的代码重复。仅仅因为两个方法/接口(interface)共享相同的基本签名并不意味着它们应该合并为一个。我建议您创建关于何时以及如何使用它们的完全自记录的监听器接口(interface)。

关于java - 是否有在 Android 或 Java 中定义的任何通用监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325072/

相关文章:

java - Java中的正则表达式有什么问题

java - 从两个不同的数据源中选择排序的数据

java - 如何在 android 'java' 中将位图对象转换为图像对象,反之亦然

android - AWS-放大-Appsync : What is the correct workflow when using CLI to make changes to the cloud resources from an Android app?

java - Android 中快速变化的位图

java - 以 Java8 声明式方式填充 Arraylist,而不是迭代地执行

Java:序列化:如何仅存储引用,而不存储内容

java - 如何使用数字形字符串创建枚举类

android - ExpandableListView 设置 subview 的最大尺寸

android - OpenGL:渲染到纹理的尺寸大于屏幕尺寸和glViewport