Normal
Nur weil deine generischen Typen beide "T" heißen, haben die nichts miteinander zu tun.Wenn du also in der ListNode Klasse sagt "ListNode<T extends Comparable<T>>"und in deiner LinkedList-Klasse wieder "T" verwendest, bedeutet das nicht, dass dieses T wieder Comparable implementiert.Das musst du schon separat nochmal angeben:"class LinkedList< T extends Comparable<T>>".Wenn du nichts angibst wie in deinem Fall, ist das das gleiche wie:"class LinkedList< T extends Object>".Und das passt nicht, wie du siehst.
Nur weil deine generischen Typen beide "T" heißen, haben die nichts miteinander zu tun.
Wenn du also in der ListNode Klasse sagt "ListNode<T extends Comparable<T>>"
und in deiner LinkedList-Klasse wieder "T" verwendest, bedeutet das nicht, dass dieses T wieder Comparable implementiert.
Das musst du schon separat nochmal angeben:
"class LinkedList< T extends Comparable<T>>".
Wenn du nichts angibst wie in deinem Fall, ist das das gleiche wie:
"class LinkedList< T extends Object>".
Und das passt nicht, wie du siehst.