所以,我理解这个错误消息告诉我出了什么问题,但是我无法确定为什么我会出现这个错误以及如何解决它:
构造函数类Node中的节点不能应用于给定类型 要求:E#1 发现:没有争论 原因:实际和正式的参数列表长度不同 其中E#1,E#2是类型变量: E#1扩展了MyStack类中声明的Object E#2扩展了在Node
类中声明的Object我过去使用链接列表实现了堆栈,之前从未遇到过这种情况。我已经包含了我的MyStack类和Node类的第一部分代码,因为我不相信所包含的方法是相关的。如果他们是我很乐意编辑它们。我的主要问题是我不明白它为什么要制作两个单独的泛型类型。我理解它告诉我实际和正式的参数列表的长度不同,但是如何才能解决这个问题?我可以做些什么呢?
public class MyStack<E> extends Node<E>{
//pieced together linked list
private int cnt;
private Node<E> head;
public MyStack() {
head = null;
cnt = 0;
}
这是Node Class。
public class Node <E>{
public Node<E> link;
public E item;
public Node(E data) {
item = data;
link = null;
}
有关为什么显示2种不同的泛型类型的任何线索都会有所帮助。干杯!
答案 0 :(得分:4)
由于Node
没有无参数构造函数,MyStack
扩展Node
,因此您需要指定MyStack
的构造函数如何调用Node
的构造函数。目前,这不会编译,因为您在super
的构造函数的开头没有MyStack
构造函数调用。