在我的android应用中,生命周期启动并通过初始状态后,需要完成许多更新。
现在,我正在尝试添加一个选项,以允许用户禁用接收推送通知,并且我必须创建一个自定义的“侦听器”,这样它才能到达onCreate回调内部的方法,并且我注意到它不是我第一次这样做。
所以我想知道,是否有一种方法可以制作一些“抽象”接口,而不是为每个类实现一个新的侦听器(其中有数十个……)。

只是为了使自己更清楚,这是我的意思的伪代码:

interface X:
{
   void onDoneFragment1();
   void onDoneFragment2();
   void onDoneFragment3();
...
}

然后
fragment 1:
..
x.setOnListenFragment1( new OnDoneFragment1(){
@Override
public onDoneFragment1(){
......
..

片段2和其他片段相同。
 fragment 2:
    ..
    x.setOnListenFragment2( new OnDoneFragment2(){
    @Override
    public onDoneFragment2(){
    ......
    ..

最佳答案

是的,您有两种选择:

1)只需用所有空白的impl创建一个抽象类。这样的方法

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 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();}
...
}

10-06 13:46
查看更多