Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免实现所有方法_Java_Interface - Fatal编程技术网

Java 如何避免实现所有方法

Java 如何避免实现所有方法,java,interface,Java,Interface,我在很多类中使用回调的接口,所以当我实现这个回调时,我需要覆盖所有方法,但我只使用了类中的1或2个方法。我怎样才能避免这种情况 这是回调: public interface DatabaseCallback { void onContactPhotoSaved(); void onContactPhotoUpdated(); void onContactPhotoDeleted(); void onContactPhotoFounded(ContactIn

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

这是回调:

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)。可以做我在帖子中添加的事情吗?可以把一个接口分解成更小的接口吗?是的。有可能完成我在帖子中添加的操作吗?有可能将一个界面拆分成更小的界面吗?对