2014-03-01 27 views
0

VectorQueue這裏是一個實現向量方法的隊列數據結構。在我的測試類的底部,我可以成功編譯代碼,如「myVector.enqueue(20);」,其中myVector是VectorQueue類的實例。它的實際類型Queue - 在這裏看到爲什麼我不能在VectorQueue的這個實例上實現我的Vector方法?

Queue<Integer> myVector = new VectorQueue<Integer>(); 

我的問題是:有沒有辦法使用的實例「myVector」向量方法一旦被現實化類型隊列?我已經試過如下:

((Vector<T>) myVector).insertAtRank(2,5); 

我也試圖讓我的主類VectorQueue實現Queue和矢量接口,但它並沒有幫助。我還想知道爲什麼不能有多種實現類型?

package W7; 

public class VectorQueue<T> implements Queue<T> { 

public Vector<T> myVector = new ArrayVector<T>(); 

public void enqueue(T e) { 
    myVector.insertAtRank(myVector.size(), e); 
} 

public T front() { 
    return myVector.elemAtRank(0); 
} 

public T dequeue() { 
    return myVector.removeAtRank(0); 
} 

public boolean isEmpty() { 
    return myVector.isEmpty(); 
} 

public int size() { 
    return myVector.size(); 
} 

public String toString(){ 
    return myVector.toString(); 
} 

public static void main(String[] args) throws VectorFullException, 
     RankOutOfBoundsException { 

    Queue<Integer> myVector = new VectorQueue<Integer>(); 

    try { 

     myVector.enqueue(10); 
     System.out.println(myVector); 

     myVector.enqueue(5); 
     System.out.println(myVector); 

     myVector.dequeue(); 
     System.out.println(myVector); 

     myVector.enqueue(15); 
     System.out.println(myVector); 

     myVector.enqueue(3); 
     System.out.println(myVector); 

     myVector.dequeue(); 
     System.out.println(myVector); 

     myVector.enqueue(7); 
     System.out.println(myVector); 

     myVector.dequeue(); 
     System.out.println(myVector); 

     myVector.enqueue(20); 
     System.out.println(myVector); 

     ((Vector<T>) myVector).insertAtRank(2,5); 

    } catch (VectorFullException RankOutOfBoundsException) { 
     System.out.println("Error"); 
    } 
    int total = 0; 
    while(! myVector.isEmpty()){ 
     total += myVector.dequeue(); 
    } 
    System.out.println("The total size of the contents: " + total); 
    } 
} 

回答

1

不是爲接口引用創建實例,而是使用類的引用。 VectorQueue<Integer> myVector = new VectorQueue<Integer>();

+0

這實際上不起作用。我嘗試過這個。 – COOLBEANS

+0

擴展類Vector Vector 並且還實現隊列,您也可以使用Vector的方法。 – user3297129

+0

矢量是一個接口,所以它只能實現,而不能擴展。我試着在VectorQueue類中同時使用Vector和Queue實現,我認爲它應該工作,但是沒有。它沒有。 – COOLBEANS

相關問題