我对这个 AbstractQueue 的实现做错了什么感到困惑。
此代码是导致错误的原因:
public static void main(String[] args) {
Stack<Integer> intStack = new Stack();
MyQueue<Integer> realQueue = new MyQueue();
PriorityQueue<Integer> intQueue = new PriorityQueue();
}
Eclipse 说我需要从 MyQueue 中删除通用类型。
这是实现的类:
import java.util.AbstractQueue;
import java.util.Iterator;
public class MyQueue extends AbstractQueue<Object> {
private T[] arr;
private int headPos;
private int tailPos;
private int size = 0;
@Override
public boolean offer(T e) {
if (size < arr.length)
size++;
else if (headPos == tailPos)
headPos = nextPos(headPos);
arr[tailPos] = e;
tailPos = nextPos(tailPos);
return true;
}
private int nextPos(int pos) {
return (pos + 1) % arr.length;
}
@Override
public T peek() {
if (size == 0)
return null;
return arr[headPos];
}
@Override
public T poll() {
if (size == 0)
return null;
size--;
T res = arr[headPos];
headPos = nextPos(headPos);
return res;
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
return size;
}
}
这是我第一次实现队列,也是我第一次创建一个使用泛型的类,所以我完全不知道该怎么做。当我遵循 Eclipse 的建议时,我得到一个空指针异常,并且当我保留通用代码时,它不会编译。