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

时间:2014-02-18 03:24:30

标签: java methods optional

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

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

2 个答案:

答案 0 :(得分:2)

他们不是真正的选择。

您必须提供某种实现,但提供仅抛出异常的实现是很常见的:

public void remove() {
    throw new UnsupportedOperationException();
}

在某些情况下,提供“无所事事”的实施也是合理的:

public void remove() {
    // Can't remove...
}

如果您执行其中任何一项操作,最好记录您已完成此操作。

如果将其设为抽象类,则不必在此特定类中实现这些方法。但是在某种程度上,在类层次结构中,您必须使用所有方法实现具体的类。在实例化实例化类之前,实际上什么都没发生,而且你不能用抽象类来实现。

答案 1 :(得分:0)

接口方法不是可选的,而是确保实现给定接口的类实现其所有方法,除非它是一个抽象类。当一个类实现某个接口时,可以根据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();
    }
}

希望这很有见地。