Hi Stack Overflow社区^ _ ^
基本上,我正在使用Stacks并从Infix转换为Postfix方程式。 当我尝试编译Stack类时,这是在屏幕上显示的错误消息:
Stack.java:5: error: type argument T#1 is not within bounds of type-variable T#2
private LinkedList<T> list;
^
where T#1,T#2 are type-variables:
T#1 extends Object declared in class Stack
T#2 extends Comparable<T#2> declared in class LinkedList
我正试图弄清楚这个错误,但遗憾的是我不知道可能是什么问题。如果我知道的更好,我可以为您提供更多信息。
提前感谢您的任何意见和帮助!
更新:这是我的班级......
package ListPkg;
public class Stack<T> // implements Comparable<Stack>>
{
private LinkedList<T> list;
public Stack()
{
this("list");
}
public Stack(String name)
{
list = new LinkedList(name);
}
public void push(T item)
{
list.insertAtFront(item);
}
public T pop()
{
list.removeFromFront();
}
public int lenghtIs()
{
return list.lengthIs();
}
public T peek()
{
return list.returnFirstNode();
}
public void print()
{
list.print();
}
public boolean isEmpty()
{
return list.isEmpty();
}
}
答案 0 :(得分:5)
您似乎将一个类LinkedList
声明为
class LinkedList<T extends Comparable<T>> {...}
但您尝试在声明为
的班级Stack
中使用它
class Stack<T> {
private LinkedList<T> list;
...
}
T
中声明的类型变量Stack
与T
中的类型变量LinkedList
完全无关。更重要的是,它们不兼容。 LinkedList
期望一个类型为Comparable
的子类型,但Stack
为它提供一个没有边界的类型参数。编译器不允许这样做。
为Stack
课程添加适当的界限&#39;类型参数
class Stack<T extends Comparable<T>> {