我需要创建一个基于数组的堆栈,从接口(interface)获取方法。我想从接口(interface)实现 push(E e) 方法,但出现以下错误:
The method push(E) of type ArrayStack<E> must override or implement a supertype method
public interface Stack<E> extends BasicCollection {
public E top() throws EmptyStackException;
public void push(E e);
public E pop() throws EmptyStackException;
}
@Override
public void push(E e) {
if(size == arrayCapacity) {
array = Arrays.copyOf(array, array.length * 2);
}
array[size] = e;
size += 1;
}
我该如何解决这个问题?它具有与界面中相同的参数。怎么了?
最佳答案
当你写implements Stack
时您使用的是原始类型。
参见What is a raw type and why shouldn't we use it?
因为你没有指定泛型类型E
在Stack<E>
,使用基类型 Object,就像你写 implements Stack<Object>
。这意味着该类预计会实现方法 push(Object)
而不是push(E)
.
大概你的意思是
class ArrayStack<E> implements Stack<E>
关于java - 如何修复使用参数 E e 实现方法时有关父类(super class)型的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910827/