public class GenericLinkedList<T extends Comparable<T>> implements Cloneable {

GenericListNode<T> head;

/**
 * inserts a new node containing the data toAdd at the given index.
 * @param index
 * @param toAdd
 */
public <T> void add (int index, T toAdd) {
    GenericListNode<T> node = new GenericListNode<T>((T) toAdd);
    if (isEmpty()) {
        head = node;
    } else {

    }

}

这是我的代码,由于某种原因,我在执行时遇到了问题
head = node;

它说:
Type mismatch: cannot convert from GenericListNode<T> to GenericListNode <T extends Comparable<T>>

建议将Casting节点设置为
head = (GenericListNode<T>) node;

但这仍然给我错误。

最佳答案

在此声明中

public <T> void add

您正在定义一种新类型T,它与类级别定义的T完全独立。这就是声明通用方法的表示法。

由于这两种类型没有相同的界限,因此它们不兼容,并且不能将一种转换为另一种。

摆脱通用声明。

关于java - 奇怪的错误,试图在Java中创建一个通用的链表类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30291553/

10-09 03:11