这里的类VectorQueue
是实现向量方法的队列数据结构。在底部的测试类中,我可以成功编译代码,例如“ myVector.enqueue(20);”,其中myVector是VectorQueue
类的实例。实际类型为Queue
-参见此处
Queue<Integer> myVector = new VectorQueue<Integer>();
我的问题是:实例“ myVector”被实现为Queue类型后,是否无法在其上使用矢量方法?我尝试了以下方法:
((Vector<T>) myVector).insertAtRank(2,5);
我还尝试使我的主类VectorQueue实现Queue和Vector接口,但这没有帮助。我也想知道,为什么某些东西不能具有多个已实现的类型?
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);
}
}
最佳答案
不用为接口引用创建实例,而要使用类的引用。 VectorQueue<Integer> myVector = new VectorQueue<Integer>();