4 回答

TA貢獻1777條經驗 獲得超10個贊
編寫一個實現所有功能但每個功能都為空的類。然后從中擴展您的類,以便它們繼承空主體函數。
如果您是接口類的所有者,您還可以考慮為他們提供一個默認的不執行任何操作的實現。但是,如果它是一個庫類,那是行不通的。

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) {}
}

TA貢獻1811條經驗 獲得超4個贊
使用 Java 語言的接口實現只能做兩件事:
實施所有方法(如您所說)。
只實現幾個方法并聲明類抽象(因此,你不能實例化它)。
根據您想要執行的操作,您可以創建一個類來實現具有某種默認行為的所有方法,然后重寫您需要在每種情況下定義的方法。

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
}
}
添加回答
舉報