在我的 Android 应用程序中,在生命周期开始并通过初始状态后需要完成大量更新。 现在我正在努力添加一个选项以允许用户禁用接收推送通知,我必须创建一个自定义“监听器”以便它可以到达 onCreate 回调中的一个方法,我注意到它不是我第一次这样做。 所以我想知道,有没有办法制作一些“抽象”接口(interface),而不是为每个类(有几十个......)实现一个新的监听器。
只是为了让自己更清楚,这是我的意思的伪代码:
interface X:
{
void onDoneFragment1();
void onDoneFragment2();
void onDoneFragment3();
...
}
然后
fragment 1:
..
x.setOnListenFragment1( new OnDoneFragment1(){
@Override
public onDoneFragment1(){
......
..
fragment 2 和其他 fragment 相同..
fragment 2:
..
x.setOnListenFragment2( new OnDoneFragment2(){
@Override
public onDoneFragment2(){
......
..
最佳答案
是的,您有两个选择:
1) 只需创建一个包含所有空白实现的抽象类。这样的方法
2) 如果你使用 RetroLambda将 Java8 语法支持添加到 Java7,并通过与 Android 的关系....您可以制作 an Interface with 'default' methods .
抽象类:
abstract class X:
{
// having this makes sure the person only uses a method they have 'overridden'
private Exception makeException(){
return new Exception("Called Method from abstract class that wasn't overridden");
}
void onDoneFragment1(){throw makeException();}
void onDoneFragment2(){throw makeException();}
void onDoneFragment3(){throw makeException();}
...
}
与“默认方法”的接口(interface)
interface X:
{
// having this makes sure the person only uses a method they have 'overridden'
private Exception makeException(){
return new Exception("Called Method from abstract class that wasn't overridden");
}
default void onDoneFragment1(){throw makeException();}
default void onDoneFragment2(){throw makeException();}
default void onDoneFragment3(){throw makeException();}
...
}
关于java - 为应用程序实现一个通用的观察者模式/监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797515/