java - 如何修复使用参数 E e 实现方法时有关父类(super class)型的错误?

标签 java stack supertype

我需要创建一个基于数组的堆栈,从接口(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?

因为你没有指定泛型类型EStack<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/

相关文章:

java - 跨平台应用程序。需要建议

java - 从java/jsp/html页面执行docker命令

java - 最小化 JUnit 测试加载的类

java - Java中栈中函数调用次数的限制是如何定义的?

c++ - 指针数组栈实现

Java 堆栈比较

java - 在调用父类(super class)型构造函数之前无法引用 "X",其中 x 是最终变量

java - 如何调用代码或转到代码中的某个位置。 java

database - Lucidchart 可以制作增强型 ER 图(EERD)吗?如果是,那么如何建模父类(super class)型、子类型和继承?

java - 在调用父类(super class)型构造函数之前无法引用 PublicationDate