亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免實現所有方法

如何避免實現所有方法

倚天杖 2023-01-05 10:15:02
我正在為我在很多類中使用的回調使用一個接口,所以當我實現這個回調時,我需要覆蓋所有方法,但我只使用了類中的 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();}}
查看完整描述

4 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

編寫一個實現所有功能但每個功能都為空的類。然后從中擴展您的類,以便它們繼承空主體函數。

如果您是接口類的所有者,您還可以考慮為他們提供一個默認的不執行任何操作的實現。但是,如果它是一個庫類,那是行不通的。


查看完整回答
反對 回復 2023-01-05
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

您可以在接口中添加默認實現,這樣您就不需要重寫所有方法:


public interface DatabaseCallback {


    default void onContactPhotoSaved() {}


    default void onContactPhotoUpdated() {}


    default void onContactPhotoDeleted() {}


    default void onContactPhotoFounded(ContactInfo item) {}


    default void onDataNotAvailable() {}


    default void onErrorDuringProcess() {}


    default void onContactPhotoLoaded(List<ContactInfo> users) {}


}

如果需要,這將允許您使用您的實現擴展另一個類。


如果接口來自庫并且您無法修改它,則可以創建一個中間接口來擴展第一個接口并添加默認實現。然后你實現你的接口。


public interface MyDatabaseCallback extends DatabaseCallback {


    @Override default void onContactPhotoSaved() {}


    @Override default void onContactPhotoUpdated() {}


    @Override default void onContactPhotoDeleted() {}


    @Override default void onContactPhotoFounded(ContactInfo item) {}


    @Override default void onDataNotAvailable() {}


    @Override default void onErrorDuringProcess() {}


    @Override default void onContactPhotoLoaded(List<ContactInfo> users) {}


}


查看完整回答
反對 回復 2023-01-05
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

使用 Java 語言的接口實現只能做兩件事:

  • 實施所有方法(如您所說)。

  • 只實現幾個方法并聲明類抽象(因此,你不能實例化它)。

根據您想要執行的操作,您可以創建一個類來實現具有某種默認行為的所有方法,然后重寫您需要在每種情況下定義的方法。


查看完整回答
反對 回復 2023-01-05
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

您可以創建一個實現所有方法的類,然后從它繼承:



public class MyDatabaseCallback implements DatabaseCallback{


    @Override void onContactPhotoSaved(){}


    @Override void onContactPhotoUpdated(){}


    @Override void onContactPhotoDeleted(){}


    @Override void onContactPhotoFounded(ContactInfo item){}


    @Override void onDataNotAvailable(){}


    @Override void onErrorDuringProcess(){}


    @Override void onContactPhotoLoaded(List<ContactInfo> users){}


}

現在,您所要做的就是繼承自MyDatabaseCallback:


public class MyCustomDatabaseCallback extends MyDatabaseCallback {

    @Override void onDataNotAvailable(){

        // TODO

    }

}


查看完整回答
反對 回復 2023-01-05
  • 4 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號