在实现带有参数 E e 的方法时如何解决有关超类型的错误?

我需要创建一个从接口获取方法的基于数组的堆栈。在那里,我想从接口实现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;

   }

我该如何解决这个问题?它具有与界面中相同的参数。怎么了?


繁星coding
浏览 81回答 2
2回答

呼唤远方

当您编写时,implements Stack您使用的是原始类型。请参阅什么是原始类型以及我们为什么不应该使用它?因为你没有在 中指定泛型类型E,Stack<E>所以使用基类型 Object,就像你写的一样implements Stack<Object>。这意味着该类应该实现该方法push(Object)而不是push(E).大概你的意思是class&nbsp;ArrayStack<E>&nbsp;implements&nbsp;Stack<E>

素胚勾勒不出你

公共类 ArrayStack 实现 Stack这是我的班级宣言。这个有效:公共类 ArrayStack 实现 Stack刚刚添加到 clas 声明的 Stack 中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java