1 java generics compiler-errors
在第 11 行有一个错误。
operator < cannot be applied to java.lang.Object,java.lang.Object
Run Code Online (Sandbox Code Playgroud)
我不太明白这一点,但是我又是 Java 泛型的新手。请多多包涵。
public void sortbykey()
{
LinkedList temp = new LinkedList();
LinkedList third = new LinkedList();
temp=head;
if(temp!=null)
{
while(temp.next!=null)
{
if (temp.key < temp.next.key)
{
third.item = temp.key;
temp.key = temp.next.key;
temp.next.key = third.item;
}
else
temp = temp.next;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要比较非数字类型,您需要Comparable在该类型上实现并使用temp.key.compareTo(temp.next.key) < 0。
如果您使用的是LinkedList<? extends Number>,则由于类型擦除,它将不适用。但是,如果您指定一个具体实现来包装<运算符适用的原语(请参阅自动装箱),例如LinkedList<Integer>,则有可能,因为Integer被指定为边界Integerwraps int,并且<运算符适用于int。
在您的情况下,由于您使用的是原始类型,因此边界为java.lang.Object,该<运算符不适用。就像我们这些阅读您的问题的人一样,我们无法确定LinkedListis 是否<可以应用于该类型。
无论如何,通常应该避免原始类型,因为它们有效地剥离了泛型的值。