type参数不在type-variable的范围内

时间:2014-03-26 02:20:40

标签: java stack

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();
    }
}

1 个答案:

答案 0 :(得分:5)

您似乎将一个类LinkedList声明为

class LinkedList<T extends Comparable<T>> {...}

但您尝试在声明为

的班级Stack中使用它
class Stack<T> {
    private LinkedList<T> list;
    ...
}

T中声明的类型变量StackT中的类型变量LinkedList完全无关。更重要的是,它们不兼容。 LinkedList期望一个类型为Comparable的子类型,但Stack为它提供一个没有边界的类型参数。编译器不允许这样做。

Stack课程添加适当的界限&#39;类型参数

class Stack<T extends Comparable<T>> {