java - 接口(interface)的默认实现?或保留为空

标签 java interface implementation

所以这个问题并不是很容易理解,但我会尽力,假设我有一个界面:

interface OnWindowMoveListener{
    void onWindowMove(MotionEvent motionEvent);
}

现在在我的类(class)里

OnWindowMoveListener onWindowMoveListener;

public void setOnWindowMoveListener(OnWindowMoveListener onWindowMoveListener){
    this.onWindowMoveListener = onWindowMoveListener;
}

稍后在我的代码中调用 onWindowMoveListener.onWindowMove() 但我不想检查 onWindowMoveListener 是否已由用户设置,因此不为空,我将如何为此监听器创建默认实现?如果用户自己没有实现这些接口(interface),我是否必须在类的主方法中手动实现这些接口(interface),或者是否有其他方法可以做到这一点?我一直在调用之前检查接口(interface)是否已实现,但想知道是否有更干净的方法来执行此操作。谢谢

最佳答案

进行 nullcheck 并不是一种成本操作,但如果您确实需要避免它,最好的选择是使用空对象设计模式。

创建一个不执行任何操作的接口(interface)实现,然后将其用作 onWindownMoveListener 的默认值。

有关此设计模式的更多信息,请参阅:https://sourcemaking.com/design_patterns/null_object/java-0

关于java - 接口(interface)的默认实现?或保留为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41168639/

相关文章:

c# - 组合继承、实现和泛型问题

java - 如果分割字符是动态的或未知的,如何分割字符串?

java - 如何将保护级别从正常更改为危险

typescript - 如何在定义为 "any"的第三方 TypeScript 接口(interface)中增加属性?

php - php 类和接口(interface)自动加载的区别

c++ - 如何使用链表节点修改另一个链表

Java 变量 'm' 和 'p' 前缀

java - twilio 160 与 1600 个字符

c - GtkMenuItem - 侧面的空白区域

c++ - 查询简单的 C++ 线程池实现