两种不同的泛型类型出错

时间:2013-10-29 04:00:43

标签: java generics nodes

所以,我理解这个错误消息告诉我出了什么问题,但是我无法确定为什么我会出现这个错误以及如何解决它:

构造函数类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种不同的泛型类型的任何线索都会有所帮助。干杯!

1 个答案:

答案 0 :(得分:4)

由于Node没有无参数构造函数,MyStack扩展Node,因此您需要指定MyStack的构造函数如何调用Node的构造函数。目前,这不会编译,因为您在super的构造函数的开头没有MyStack构造函数调用。