接口中的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
。报告错误的位置时要小心;通常最好只发布错误消息。错误不在你的接口中,而是在你的实现类中。这就是为什么你应该始终使用