Was ist PECS (Producer Extends Consumer Super) bei Java-Generics?
Hallo zusammen! Ich schreibe seit ein paar Monaten Java, aber ich bin immer noch verwirrt mit Wildcards bei Generics. Ich habe über PECS gelesen, aber in der Praxis verstehe ich trotzdem nicht, wann man `? extends T` und wann `? super T` verwenden soll.
Hier ist ein konkretes Beispiel, das mich verwirrt. Ich habe eine Methode, die Elemente von einer Liste in eine andere kopieren soll:
```java
public static void copy(List> src, List> dest) {
for (Object item : src) {
dest.add(item); // Compiler-Fehler!
}
}
```
Der Compiler beschwert sich über `dest.add(item)`. Ich verstehe, dass ich bounded Wildcards verwenden muss, aber ich kann nicht herausfinden, welche genau.
Angenommen, ich habe eine Klassenhierarchie: `Animal` → `Dog` → `Puppy`. Ich möchte eine Methode schreiben, die:
1. Objekte aus einer Liste liest (z.B. eine Liste von `Dog`)
2. S