绑定不匹配链表Java
我正在做一个任务,使用链表在java中创建一个堆栈,但是我遇到了一个错误,这阻止了我做任何事情。 这里是所有节点类的第一个绑定不匹配链表Java,java,generics,linked-list,stack,Java,Generics,Linked List,Stack,我正在做一个任务,使用链表在java中创建一个堆栈,但是我遇到了一个错误,这阻止了我做任何事情。 这里是所有节点类的第一个 public class SortedLinkedSetNode<T extends Comparable<T>>{ protected T value; protected SortedLinkedSetNode<T> next; // other methods } 公共类SortedLinkedSetN
public class SortedLinkedSetNode<T extends Comparable<T>>{
protected T value;
protected SortedLinkedSetNode<T> next;
// other methods
}
公共类SortedLinkedSetNode{
保护T值;
受保护的SortedLinkedSetNode下一步;
//其他方法
}
现在这里是Stack类,我只给出Push方法,因为那里发生了错误
public class StackList<E> implements Stack<E> {
protected SortedLinkedSetNode upperMost;
public void push( E element) {
SortedLinkedSetNode <E> newNode = new SortedLinkedSetNode (element);
newNode.next = upperMost;
upperMost = newNode;
}
}
public类StackList实现堆栈{
受保护的SortedLinkedSetNode最上面;
公共无效推送(E元素){
SortedLinkedSetNode newNode=新的SortedLinkedSetNode(元素);
newNode.next=最上面;
最上面的=新节点;
}
}
问题是,当我尝试在内部推送新节点时,会收到以下消息:
Bound mismatch: The type E is not a valid substitute for the bounded parameter <T extends Comparable<T>> of the type SortedLinkedSetNode<T>
绑定不匹配:类型E不是SortedLinkedSetNode类型的绑定参数的有效替代品
我试图修改stack类,使其
public class StackList<E extends Comparable<E>> implements Stack<E> {
public类StackList实现堆栈{
但我不允许修改它(这只是作业规范)。我也尝试过使用T,但没有使用任何东西和各种组合,但总是有一个错误。我认为这一切都源于此(已给出)
公共类SortedLinkedSetNode{
但我不确定,也不确定如果真的是从这里开始的话该怎么办有人能帮我弄清楚这到底是什么,以及我如何解决它。如果我不能在stack类中创建一个新节点,我怎么才能开始执行Push-Pop等?谢谢你“类型E不是SortedLinkedSetNode类型的bounded parameter>的有效替代品”这意味着
E
比T extends Comparable
更通用。您声明您的泛型类型T
必须extend Comparable
,而
没有此类限制,因此,E
对于SortedLinkedSetNode
无效
如果不能修改堆栈类,那么除了将类更改为
public class SortedLinkedSetNode<T>
公共类SortedLinkedSetNode
您还需要在对象实例化中使用
new SortedLinkedSetNode<E>(element);
新的SortedLinkedSetNode(元素);
您已将您的SortedLinkedSetNode
类设置为通用类,上界为T
。但是,当您尝试在堆栈列表中使用E
类时,您没有使用相同的上界声明E
,从而导致边界不匹配。请尝试将上界添加到E
上<代码>堆栈列表
:
public class StackList<E extends Comparable<E>> implements Stack<E> {
此外,在创建新的SortedLinkedSetNode
时,将
添加到中(如果使用Java 1.7+,可以是菱形“操作符”
)
SortedLinkedSetNode newNode=新的SortedLinkedSetNode(元素);
你不应该有公共类StackList实现堆栈
?你不能在堆栈
中有SortedLinkedSetNode
。这也没有意义。你应该在那里有普通的LinkedSetNode
。如果你想有SortedLinkedSetNode
,你必须有一个堆栈
需要可比较的对象。必须使类型参数兼容。
public class StackList<E extends Comparable<E>> implements Stack<E> {
protected SortedLinkedSetNode<E> upperMost;
SortedLinkedSetNode<E> newNode = new SortedLinkedSetNode<E> (element);