尝试覆盖超类接口时出现Java编译器错误

时间:2015-03-21 03:44:18

标签: java

当我尝试覆盖下面的推送方法时,我不明白为什么我收到编译器错误。

Eclipse中的确切输出错误是“名称冲突:类型为stackImplementation的方法push(T)与类型堆栈的push(Object)具有相同的擦除但不覆盖它”

public interface stack<T> {
    T pop();
    void push(Object t);
}

public class stackImplementation<T> implements stack{

    private final Deque<T> deque = new ArrayDeque<T>();

    @Override
    public T pop() {
        return deque.removeFirst();
    }

    @Override
    public void push(T t) {
        deque.addFirst(t);
    }
}

谢谢!

3 个答案:

答案 0 :(得分:3)

你有2个错误:

  1. 推送界面使用Object,但应该是T

    void push(T t);

  2. 类实现stack,但stack<T>

    class stackImplementation<T> implements stack<T> {

答案 1 :(得分:0)

你应该......

@Override
public void push(Object t) {
    deque.addFirst(t);
}

答案 2 :(得分:0)

您没有尝试覆盖接口方法,以覆盖方法

改变这个:

@Override
public void push(T t) {
    deque.addFirst(t);
}

要:

@Override
public void push(Object t) {
    deque.addFirst(t);
}

同样的实现应该如下所示:

public class stackImplementation<T> implements stack<T>
{
  ......
}