我有一个LinkedList类,它作为Queue类的基础,而Queue类是PrintQueue类的基础。
这是我的PrintQueue类:
public class PrintQueue<T> {
private Queue<T> queue;
public PrintQueue() {
queue = new Queue<T>();
}
public void lpr(String owner, int jobID) {
queue.enqueue(new Job(owner, jobID));
}
}
queue.enqueue(...)
行,从底部开始的三行导致错误:队列类型中的方法enqueue(T)不适用于参数(Job)
PrintQueue是Job对象的队列。
我的Queue类中的enqueue方法如下所示:
public void enqueue(T item) {
queue.addToEnd(item);
}
而addToEnd方法如下所示:
public void addToEnd(T item) {
Node<T> itemnode = new Node<T>(item, null);
if (isEmpty()) {
head = itemnode;
}
else {
Node<T> curr = head;
while (curr.getNext()!=null) {
curr= curr.getNext();
}
curr.setNext(itemnode);
}
count++;
}
为什么这不起作用?这三个类(PrintQueue,Queue和LinkedList)都是通用类。
最佳答案
您试图为某个任意类型Queue<T>
创建一个T
-但随后您试图使Job
入队。
例如,您认为将Job
放入Queue<String>
意味着什么?
您真的需要PrintQueue
通用吗?我怀疑你只是想要:
public class PrintQueue {
private final Queue<Job> queue;
public PrintQueue() {
queue = new Queue<Job>();
}
public void lpr(String owner, int jobID) {
queue.enqueue(new Job(owner, jobID));
}
}
(此外,当内置类库中有各种良好的队列时,为什么没有自己的
Queue
类也不清楚……为什么没有O(N)的“加末”行为也是...)