错误 。运算符 < 不能应用

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)

And*_*enn 5

要比较非数字类型,您需要Comparable在该类型上实现并使用temp.key.compareTo(temp.next.key) < 0

如果您使用的是LinkedList<? extends Number>,则由于类型擦除,它将不适用。但是,如果您指定一个具体实现来包装<运算符适用的原语(请参阅自动装箱),例如LinkedList<Integer>,则有可能,因为Integer被指定为边界Integerwraps int,并且<运算符适用于int

在您的情况下,由于您使用的是原始类型,因此边界为java.lang.Object,该<运算符不适用。就像我们这些阅读您的问题的人一样,我们无法确定LinkedListis 是否<可以应用于该类型。

无论如何,通常应该避免原始类型,因为它们有效地剥离了泛型的值。