IEDA不允许接口中的push方法的实现类像老师那样实现
来源:3-2 栈的基本实现
吐槽职人
2019-01-07
老师您好,我在跟着您的课程做的时候,发现我在写Stack接口的实现类ArrayStack时候发现,其中的push方法在像老师那样
@Override
public void push(E e) {
array.addLast(e);
}
实现的话IDEA就会报错,只有写成
@Override
public void push(Object o) {
array.addLast((E) o);
}
才可以通过IDEA的编译不报错,我明明已经将接口中的push传入参数设置成泛型E了
public interface Stack<E> {
void push(E e); // 入栈
}
请问老师这是怎么回事?
以下是IDEA的报错信息
‘push(E)’ in ‘three_scackAndQueue.ArrayStack’ clashes with ‘push(E)’ in ‘three_scackAndQueue.Stack’; both methods have same erasure, yet neither overrides the other
写回答
1回答
-
请确认一下你的ArrayStack类声明是正确的,尤其是泛型相关:
public class ArrayStack<E> implements Stack<E>
可以尝试一下使用课程的官方代码,在你的环境下运行,看是否也有相同的问题?如果没有问题,仔细检查一下,自己的代码哪里是不是有问题?
课程的官方代码可以参考课程的官方github,传送门:https://github.com/liuyubobobo/Play-with-Data-Structures
如果访问github有困难,也可以使用慕课网内的课程github,传送门:https://git.imooc.com/coding-207/coding-207
加油!:)
112019-01-08
相似问题