**不确定它是否显而易见,但我正在编写java
我一直在尝试为我的一个类完成一个作业,这要求我为一个类实现ListIterator<String>
接口。我不希望实现remove()
,add()
或set()
,它们是接口的可选方法。但是现在它已经实现了,Eclipse给了我错误,说我需要实现这些方法。有谁知道为什么会这样或者我如何解决这个问题?提前感谢您的帮助。
答案 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();
}
}
希望这很有见地。