Java 如何避免实现所有方法
我在很多类中使用回调的接口,所以当我实现这个回调时,我需要覆盖所有方法,但我只使用了类中的1或2个方法。我怎样才能避免这种情况 这是回调:Java 如何避免实现所有方法,java,interface,Java,Interface,我在很多类中使用回调的接口,所以当我实现这个回调时,我需要覆盖所有方法,但我只使用了类中的1或2个方法。我怎样才能避免这种情况 这是回调: public interface DatabaseCallback { void onContactPhotoSaved(); void onContactPhotoUpdated(); void onContactPhotoDeleted(); void onContactPhotoFounded(ContactIn
public interface DatabaseCallback {
void onContactPhotoSaved();
void onContactPhotoUpdated();
void onContactPhotoDeleted();
void onContactPhotoFounded(ContactInfo item);
void onDataNotAvailable();
void onErrorDuringProcess();
void onContactPhotoLoaded(List<ContactInfo> users);
}
}编写一个类,该类实现所有函数,但每个函数都有一个空的主体。然后在此基础上扩展类,使它们继承空体函数
如果你是接口类的所有者,你也可以考虑给他们一个默认的无所事事实现。但是如果它是一个无法工作的库类。
编写一个实现所有函数但每个函数都有一个空的主体的类。然后在此基础上扩展类,使它们继承空体函数如果你是接口类的所有者,你也可以考虑给他们一个默认的无所事事实现。但是如果它是一个无法工作的库类。
对于Java语言的接口实现,您只能做两件事:- 实现所有方法(如您所说)
- 只实现几个方法并声明类抽象(因此,您无法对其进行实例)
根据您想要执行的操作,您可以创建一个类,该类使用某种默认行为实现所有方法,然后覆盖在每种情况下需要定义的方法。使用Java语言的接口实现,您只能做两件事:
- 实现所有方法(如您所说)
- 只实现几个方法并声明类抽象(因此,您无法对其进行实例)
根据您要执行的操作,您可以创建一个类来实现具有某种默认行为的所有方法,然后覆盖在每种情况下需要定义的方法。您可以创建一个类来实现所有方法,然后从中继承:
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){}
}
您可以创建一个实现所有方法的类,然后从中继承:
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){}
}
您可以在接口中添加默认实现,因此不需要覆盖所有方法:
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) {}
}
公共接口数据库回调{
默认的void onContactPhotoSaved(){}
默认的void onContactPhotoUpdated(){}
默认的void onContactPhotoDeleted(){}
默认无效onContactPhotoFounded(ContactInfo项){}
默认无效onDataNotAvailable(){}
默认无效onErrorDuringProcess(){}
默认void onContactPhotoLoaded(列表用户){}
}
这将允许您在需要时使用实现扩展另一个类
如果接口来自库,而您无法修改它,则可以创建一个中间接口,扩展第一个接口并添加默认实现。然后实现接口
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) {}
}
公共接口MyDatabaseCallback扩展了DatabaseCallback{
@覆盖默认的void onContactPhotoSaved(){}
@覆盖默认的void onContactPhotoUpdated(){}
@覆盖默认的void onContactPhotoDeleted(){}
@覆盖默认的无效onContactPhotoFounded(ContactInfo项){}
@重写默认的void onDataNotAvailable(){}
@重写默认的void onErrorDuringProcess(){}
@覆盖默认的void onContactPhotoLoaded(列表用户){}
}
您可以在界面中添加默认实现,因此无需覆盖所有方法:
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) {}
}
公共接口数据库回调{
默认的void onContactPhotoSaved(){}
默认的void onContactPhotoUpdated(){}
默认的void onContactPhotoDeleted(){}
默认无效onContactPhotoFounded(ContactInfo项){}
默认无效onDataNotAvailable(){}
默认无效onErrorDuringProcess(){}
默认void onContactPhotoLoaded(列表用户){}
}
这将允许您在需要时使用实现扩展另一个类
如果接口来自库,而您无法修改它,则可以创建一个中间接口,扩展第一个接口并添加默认实现。然后实现接口
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) {}
}
公共接口MyDatabaseCallback扩展了DatabaseCallback{
@覆盖默认的void onContactPhotoSaved(){}
@覆盖默认的void onContactPhotoUpdated(){}
@覆盖默认的void onContactPhotoDeleted(){}
@覆盖默认的无效onContactPhotoFounded(ContactInfo项){}
@重写默认的void onDataNotAvailable(){}
@重写默认的void onErrorDuringProcess(){}
@覆盖默认的void onContactPhotoLoaded(列表用户){}
}
在java中,您不能这样做,您需要将该接口分解为更小的接口。但是kotlin中有一些很酷的东西检查下面的链接可能值得一提的是Android(Studio 3.0)Java 8实现支持默认接口方法。从这里开始:。在java中,你不能这样做,你需要把这个接口分解成更小的接口。但是kotlin中有一些很酷的东西检查下面的链接可能值得一提的是Android(Studio 3.0)Java 8实现支持默认接口方法。从这里开始:。(没有min SDK)。可以做我在帖子中添加的事情吗?可以把一个接口分解成更小的接口吗?是的。有可能完成我在帖子中添加的操作吗?有可能将一个界面拆分成更小的界面吗?对