无法实现队列 - 不会覆盖抽象方法提供(java.lang.Object)

时间:2012-03-08 21:15:17

标签: java

我正在尝试实现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();
    }


}

4 个答案:

答案 0 :(得分:2)

  1. 请坚持编码约定,并使用单个大写字母作为类型参数!
  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>