在使用参数E e实现方法时如何修复超类型的错误?

问题描述 投票:1回答:2

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

我怎么解决这个问题?它与接口中的参数相同。怎么了?

java stack supertype
2个回答
0
投票

当你写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>

0
投票

public class ArrayStack实现Stack

这是我的班级声明。这个工作:

public class ArrayStack实现Stack

刚刚添加到clas声明的Stack中。

© www.soinside.com 2019 - 2024. All rights reserved.