当我尝试覆盖下面的推送方法时,我不明白为什么我收到编译器错误。
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);
}
}
谢谢!
答案 0 :(得分:3)
你有2个错误:
推送界面使用Object
,但应该是T
:
void push(T t);
类实现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>
{
......
}