我正在尝试实现Java 1.6 Queue接口,但是我收到了错误:
MyBoundedQueue.java:27:MyBoundedQueue不是抽象的,不会覆盖java.util.Queue中的抽象方法提供(java.lang.Object)
我真正不明白的是Queue类中没有 offer(Object)方法。 Java 1.6 API for Queue表示有一个方法布尔要约(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();
}
}
答案 0 :(得分:2)
Queue<T>
(如果您坚持,则为Queue<ItemType>
)答案 1 :(得分:2)
您需要将其更改为:
public class MyBoundedQueue implements Queue<ItemType>
它告诉你offer(Object)
,因为如果没有Generic类型,它就会是什么。您也不需要为您的类指定泛型类型......您不在任何地方使用泛型类型。
如果您希望您的班级使用泛型,您可以这样做:
public class MyBoundedQueue<T> implements Queue<T> {
...
您目前所拥有的任何地方ItemType
都会使用T
。
答案 2 :(得分:2)
更改为
MyBoundedQueue implements Queue<ItemType>
您的代码等同于
MyBoundedQueue implements Queue<Object>
答案 3 :(得分:2)
ItemType
是固定类,还是应该是参数?
如果它已修复,则应为class MyBoundedDeque implements Queue<ItemType>
,而不是相反。
否则,它应该是class MyBoundedQueue<ItemType> implements Queue<ItemType>
。