【发布时间】:2016-12-15 16:13:24
【问题描述】:
所以这个问题不是很容易理解,但我会尽力而为,假设我有一个界面:
interface OnWindowMoveListener{
void onWindowMove(MotionEvent motionEvent);
}
现在在我的课上
OnWindowMoveListener onWindowMoveListener;
public void setOnWindowMoveListener(OnWindowMoveListener onWindowMoveListener){
this.onWindowMoveListener = onWindowMoveListener;
}
稍后在我的代码中,onWindowMoveListener.onWindowMove() 被调用,但我不想检查 onWindowMoveListener 是否已由用户设置,因此不为空,我将如何为此侦听器创建默认实现?我是否必须在我的类的主要方法中手动实现接口,以防用户自己不实现它们,或者有其他方法吗?我一直在检查接口是否在调用之前已经实现,但想知道是否有更简洁的方法来执行此操作。谢谢
【问题讨论】:
-
简单检查用户设置的监听对象是否为非空是正常的,常见的。
-
包含的类可以实现你的监听器..
public class MyClass implements OnWindowMoveListener..然后分配它this.onWindowMoveListener = this。现在该值不会以null开头,但这并不意味着用户不会尝试设置null侦听器 - 您仍然需要检查null。 -
@VGR 如果我必须在调用它之前检查每个侦听器以查看其是否为非空,那么代码不会开始看起来整洁,这就是我正在寻找替代解决方案的原因:/
-
@trooper 用户设置一个空监听器不会是一个大问题,但是当我在这种情况下调用
onWindowMoveListener会发生什么? -
@Amroelaswar 作为在您的包含类上实现
OnMoveWindowListener的一部分,它现在拥有自己的onWindowMove方法。 - 它将被执行 - 将其留空,不执行任何操作。
标签: java interface implementation