我需要创建一个基于数组的堆栈,从接口获取方法。在那里我想从界面实现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>
public class ArrayStack实现Stack
这是我的班级声明。这个工作:
public class ArrayStack实现Stack
刚刚添加到clas声明的Stack中。