Java 缺少实现接口的可选方法/操作,导致错误

Java 缺少实现接口的可选方法/操作,导致错误,java,methods,optional,Java,Methods,Optional,**不确定这是否显而易见,但我正在编写java 我一直在尝试为我的一个类完成一项作业,该作业要求我为一个类实现ListIterator接口。我不希望实现remove()、add()或set(),这些都是接口的可选方法。但是现在它已经实现了,Eclipse给了我一些错误,说我需要实现这些方法。有人知道这是为什么,或者我如何解决这个问题吗?提前感谢您的帮助。它们实际上不是可选的 您必须提供某种类型的实现,但通常提供一个只引发异常的实现: public void remove() { thro

**不确定这是否显而易见,但我正在编写java


我一直在尝试为我的一个类完成一项作业,该作业要求我为一个类实现
ListIterator
接口。我不希望实现
remove()
add()
set()
,这些都是接口的可选方法。但是现在它已经实现了,Eclipse给了我一些错误,说我需要实现这些方法。有人知道这是为什么,或者我如何解决这个问题吗?提前感谢您的帮助。

它们实际上不是可选的

您必须提供某种类型的实现,但通常提供一个只引发异常的实现:

public void remove() {
    throw new UnsupportedOperationException();
}
在某些情况下,提供“不做任何事情”的实现也是合理的:

public void remove() {
    // Can't remove...
}
如果你做了这两件事中的任何一件,最好记录下你已经做了


如果将其作为抽象类,则不必实现该特定类中的方法。但是在类层次结构的某个点上,您必须用所有方法实现一个具体的类。在实例中实例化类之前,实际上什么都不会发生,而抽象类则不能这样做。

接口方法不是可选的,而是确保实现给定接口的类实现其所有方法,除非它是抽象类。当一个类实现某个接口时,根据Java中多态性的概念,它可以被称为接口的类型

示例如下:

public interface Herbiverous {
    void eatsPlants();
}

public class Human implements Herbiverous{
    public void eatsPlants() {
       System.out.println("I eat plants");
    }

    public static void main(String[]args) {
        Herbiverous h = new Human();
        //in which case you can only apply the methods of the interface
        h.eatsPlants();
    }
}

希望这是有见地的。

尽管这很常见,但在大多数情况下,这不是最好的做法。谢谢,我一定会这么做。如果你不介意的话,我还有一个后续问题。Eclipse建议将我的类变成一个抽象类,从我的谷歌搜索中可以看出,这使得实现方法变得不必要。然而,在我看来,这似乎会使接口的实现在一开始就毫无用处。是否有任何理由认为这是一个更好的选择?再次感谢您的帮助。如果有记录,那么这样做是完全合理的。仅适用于对接口的主要目的不重要的方法。但是我将编辑一点…
哪些是接口的可选方法
这是不正确的,接口是一个契约所有都是强制性的!。您可以提供一个空的实现,始终记录它!!