簡體   English   中英

錯誤:方法未覆蓋或從超類型實現方法

[英]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()

其次,您在QueueListIterator類中聲明了一個通用類型參數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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM