接口中的java泛型问题

接口中的java泛型问题,java,generics,Java,Generics,我正在实现一个可以管理堆栈的接口,我有以下代码: public interface Stack <E>{ public int size(); public boolean isEmpty(); public E top(); public void push(E item); //error here 公共接口堆栈{ 公共整数大小(); 公共布尔值为空(); 公共E top(); public void push(E项);//此处出错 实现

我正在实现一个可以管理堆栈的接口,我有以下代码:

public interface Stack <E>{
    public int size();
    public boolean isEmpty();
    public E top();
    public void push(E item);    //error here
公共接口堆栈{
公共整数大小();
公共布尔值为空();
公共E top();
public void push(E项);//此处出错
实现此接口的类具有:

public class StackArray<E> implements Stack{
    private E array[];
    private int top=-1;
    public StackArray(int n){
        array=(E[]) Array.newInstance(null, n); ////not quite sure about this
    }
    //more code
    public void push(E item){
        if (top==array.length-1) System.out.println("stack is full");
        else{
            top++;
            array[top]=item;
        }
    }
公共类StackArray实现堆栈{
专用E数组[];
私有int top=-1;
公共堆栈数组(int n){
array=(E[])array.newInstance(null,n);///对此不太确定
}
//更多代码
公共无效推送(E项){
if(top==array.length-1)System.out.println(“堆栈已满”);
否则{
top++;
数组[top]=项;
}
}
我得到的错误是我没有覆盖push方法,我看到两者都有相同的签名,但我不太确定


如何解决此问题?

您没有将
StackArray
中的
E
参数绑定到
Stack
中的
E
参数。请使用以下声明:

public class StackArray<E> implements Stack<E>
公共类StackArray实现堆栈

您没有将
StackArray
中的
E
参数绑定到
Stack
中的
E
参数。请使用以下声明:

public class StackArray<E> implements Stack<E>
公共类StackArray实现堆栈

当您编写
实现堆栈时
您实际上是在实现
堆栈
。请注意报告错误的位置;通常最好只发布错误消息。错误不在界面中,而是在实现类中。这就是为什么您应该始终使用
@Override
注释,IDE将当你编写
implements-Stack
时,我已经告诉你问题出在哪里了。你实际上是在实现
Stack
。报告错误的位置时要小心;通常最好只发布错误消息。错误不在你的接口中,而是在你的实现类中。这就是为什么你应该始终使用的原因e> @Overrideannotation,您的IDE会在中间通知您问题所在