当我阅读注册监听器的示例 Android 代码时,有时我会看到:
someService.registerListener(this);
在这种情况下,当前类被声明为 implements SomeListener
并覆盖 SomeListener
中声明的 1 个或多个方法接口(interface),即稍后在当前类中,他们将声明:
@Override
public void someInterfaceMethod() {
...
}
其他时候我看到:
someService.registerListener(new SomeListener() {
@Override
public void someInterfaceMethod() {
...
});
有理由选择一种方法而不是另一种吗?
最佳答案
这两个选项没有更好的选择,方法只需要一个符合接口(interface)契约的类(实现它的所有方法)。
当我试图不拥有太多匿名类,而是将它们组合在一起时,我会使用this
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
doSomething;
break;
case R.id.btn2:
doSomethingElse();
break;
}
}
通过在函数外部定义一些变量并将其分配给我的所有方法,我也可以在不使用外部类的情况下获得相同的功能。
private View.OnClickLisetner myClickListener = new View.OnClickListsner() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
doSomething;
break;
case R.id.btn2:
doSomethingElse();
break;
}
}
}
关于java - 为什么监听器有时注册到 "this",有时注册到匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364488/