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
}
}
添加回答
举报