我正在尝试实现 Java 1.6 队列接口(interface),但出现错误:
MyBoundedQueue.java:27: MyBoundedQueue 不是抽象的,不会覆盖 java.util.Queue 中的抽象方法 offer(java.lang.Object)
我真正不明白的是Queue类中没有offer(Object)方法。 Java 1.6 API for Queue说有一个方法 boolean offer(E e),其中 E 是一个参数化类型,事实上,我已经实现了它,如下所示。
有什么帮助吗?
import java.util.ArrayDeque;
import java.util.Iterator;
import java.util.Queue;
public class MyBoundedQueue<ItemType> implements Queue
{
private int _maxSize;
private ArrayDeque<ItemType> _window;
public MyBoundedQueue(int maxSize)
{
_maxSize = maxSize;
_window = new ArrayDeque<ItemType>(_maxSize);
}
public boolean add(ItemType item)
{
if (_window.size() >= _maxSize)
{
_window.removeFirst();
}
_window.addLast(item);
}
public ItemType element()
{
return _window.element();
}
public boolean offer(ItemType item)
{
add(item);
return true;
}
public ItemType peek()
{
return _window.peek();
}
public ItemType poll()
{
return _window.poll();
}
public ItemType remove()
{
return _window.remove();
}
public void clear()
{
_window.clear();
}
public int size()
{
return _window.size();
}
public Iterator<ItemType> iterator()
{
return _window.iterator();
}
}
最佳答案
您需要将其更改为:
public class MyBoundedQueue implements Queue<ItemType>
它告诉您 offer(Object)
因为如果没有通用类型,它就会是这样。您也不需要为您的类指定通用类型……您没有在任何地方使用通用类型。
如果你想让你的类使用泛型,你会想这样做:
public class MyBoundedQueue<T> implements Queue<T> {
...
在您当前拥有ItemType
的任何地方,您都将使用T
。
关于java - 无法实现 Queue - 不覆盖抽象方法 offer(java.lang.Object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625042/