Avatar ·

Was ist der Unterschied zwischen <? super T> und <? extends T> in Java Generics?

Hallo Kollegen! Ich habe angefangen, Java Generics zu lernen und bin auf Wildcards gestoßen. Ich habe die Dokumentation gelesen und Videos angeschaut, aber ich bin immer noch verwirrt über zwei Konstrukte: `` und ``. Ich verstehe, dass `? extends T` "irgendein Typ, der ein Subtyp von T ist" bedeutet, und `? super T` — "irgendein Typ, der ein Supertyp von T ist". Aber in der Praxis bekomme ich ständig Compiler-Fehler. Zum Beispiel habe ich diesen Code mit List: ```java public class Test { public static void addNumbers(List list) { list.add(42); // Das funktioniert } public static void readNumbers(List list) { Integer num = list.get(0); // Das funktioniert list.add(42); // Compiler-Fehler! Warum? } } ```