![](/img/trans.png)
[英]method does not override or implement a method from a supertype @override compile error
[英]error: method does not override or implement a method from a supertype
基於鏈表的構建隊列實現。 由於出現兩個錯誤,因此無法運行應用程序:
public class Queue<Integer> implements Iterable<Integer> {
...
public Iterator<Integer> iterator() {
return new ListIterator(first);
}
private class ListIterator<Integer> implements Iterator<Integer> {// error #1
private Node<Integer> current;
public ListIterator(Node<Integer> first) {
current = first;
}
public boolean hasNext(){ return current != null; }
public void remove() { throw new UnsupportedOperationException();}
public int next() { // error #2
if (!hasNext()) throw new NoSuchElementException();
int item = current.item;
current = current.next;
return item;
}
}
}
錯誤#1:錯誤:Queue.ListIterator不是抽象的,並且不覆蓋Iterator中Integer是類型變量的抽象方法next():Integer擴展了在Queue.ListIterator類中聲明的對象
錯誤#2:錯誤:Queue.ListIterator中的next()無法在Iterator中實現next()返回類型int與Integer不兼容,其中E,Integer是類型變量:E擴展了在接口Iterator中聲明的對象Integer擴展了在類中聲明的對象Queue.ListIterator
如何使其運作?
Java中的裝箱和拆箱在許多地方都簡化了代碼,但是方法返回類型不是其中之一。 next
方法必須返回Integer
而不是int
。 它必須與通用類型參數完全匹配。
public Integer next()
其次,您在Queue
和ListIterator
類中聲明了一個通用類型參數Integer
,它與java.lang.Integer
無關。 去掉它:
// here
public class Queue implements Iterable<Integer> {
和
// here
private class ListIterator implements Iterator<Integer> {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.