Im Abschnitt "Generika" von Blochs "Effective Java" (das für alle das "kostenlose" Kapitel ist: http://java.sun.com/docs/books/effective/generics.pdf ) sagt er:
Wenn ein Typparameter in einer Methodendeklaration nur einmal vorkommt, ersetzen Sie ihn durch einen Platzhalter.
(Siehe Seite 31-33 dieses PDFs)
Die fragliche Unterschrift lautet:
public static void swap(List<?> list, int i, int j)
vs.
public static void swap(List<E> list, int i, int j)
Anschließend wird eine statische private "Hilfsfunktion" mit einem tatsächlichen Typparameter verwendet, um die Arbeit auszuführen. Die Signatur der Hilfsfunktion entspricht genau der der zweiten Option.
Warum ist der Platzhalter vorzuziehen, da Sie KEINEN Platzhalter verwenden müssen, um die Arbeit trotzdem zu erledigen? Ich verstehe, dass in diesem Fall, da er die Liste ändert und Sie einer Sammlung keinen unbegrenzten Platzhalter hinzufügen können, warum überhaupt verwenden?