如何避免实现所有方法

我正在为我在很多类中使用的回调使用一个接口,所以当我实现这个回调时,我需要覆盖所有方法,但我只使用了类中的 1 或 2 个。我怎样才能避免这种情况?


这是回调:


public interface DatabaseCallback {


    void onContactPhotoSaved();


    void onContactPhotoUpdated();


    void onContactPhotoDeleted();


    void onContactPhotoFounded(ContactInfo item);


    void onDataNotAvailable();


    void onErrorDuringProcess();


    void onContactPhotoLoaded(List<ContactInfo> users);


}

编辑:


这个有可能??


public class DatabaseManagerCallback {


public interface ContactInfoInsertCallback{

    void onContactPhotoSaved();

    void onErrorOcurred();

}


public interface ContactInfoUpdateCallback{

    void onContactPhotoUpdated();

    void onErrorOcurred();

}


public interface ContactInfoDeleteCallback{

    void onContactPhotoDeleted();

    void onErrorOcurred();

}


public interface ContactInfoFoundedCallback{

    void onContactPhotoFounded(ContactInfo item);

    void onErrorOcurred();

}

}


倚天杖
浏览 148回答 4
4回答

不负相思意

编写一个实现所有功能但每个功能都为空的类。然后从中扩展您的类,以便它们继承空主体函数。如果您是接口类的所有者,您还可以考虑为他们提供一个默认的不执行任何操作的实现。但是,如果它是一个库类,那是行不通的。

慕哥6287543

您可以在接口中添加默认实现,这样您就不需要重写所有方法:public interface DatabaseCallback {&nbsp; &nbsp; default void onContactPhotoSaved() {}&nbsp; &nbsp; default void onContactPhotoUpdated() {}&nbsp; &nbsp; default void onContactPhotoDeleted() {}&nbsp; &nbsp; default void onContactPhotoFounded(ContactInfo item) {}&nbsp; &nbsp; default void onDataNotAvailable() {}&nbsp; &nbsp; default void onErrorDuringProcess() {}&nbsp; &nbsp; default void onContactPhotoLoaded(List<ContactInfo> users) {}}如果需要,这将允许您使用您的实现扩展另一个类。如果接口来自库并且您无法修改它,则可以创建一个中间接口来扩展第一个接口并添加默认实现。然后你实现你的接口。public interface MyDatabaseCallback extends DatabaseCallback {&nbsp; &nbsp; @Override default void onContactPhotoSaved() {}&nbsp; &nbsp; @Override default void onContactPhotoUpdated() {}&nbsp; &nbsp; @Override default void onContactPhotoDeleted() {}&nbsp; &nbsp; @Override default void onContactPhotoFounded(ContactInfo item) {}&nbsp; &nbsp; @Override default void onDataNotAvailable() {}&nbsp; &nbsp; @Override default void onErrorDuringProcess() {}&nbsp; &nbsp; @Override default void onContactPhotoLoaded(List<ContactInfo> users) {}}

波斯汪

使用 Java 语言的接口实现只能做两件事:实施所有方法(如您所说)。只实现几个方法并声明类抽象(因此,你不能实例化它)。根据您想要执行的操作,您可以创建一个类来实现具有某种默认行为的所有方法,然后重写您需要在每种情况下定义的方法。

胡子哥哥

您可以创建一个实现所有方法的类,然后从它继承:public class MyDatabaseCallback implements DatabaseCallback{&nbsp; &nbsp; @Override void onContactPhotoSaved(){}&nbsp; &nbsp; @Override void onContactPhotoUpdated(){}&nbsp; &nbsp; @Override void onContactPhotoDeleted(){}&nbsp; &nbsp; @Override void onContactPhotoFounded(ContactInfo item){}&nbsp; &nbsp; @Override void onDataNotAvailable(){}&nbsp; &nbsp; @Override void onErrorDuringProcess(){}&nbsp; &nbsp; @Override void onContactPhotoLoaded(List<ContactInfo> users){}}现在,您所要做的就是继承自MyDatabaseCallback:public class MyCustomDatabaseCallback extends MyDatabaseCallback {&nbsp; &nbsp; @Override void onDataNotAvailable(){&nbsp; &nbsp; &nbsp; &nbsp; // TODO&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java