Von Effective Java Kapitel 5 (Generika):Typ Parameter vs unbeschränkten Wildcard
// Two possible declarations for the swap method public static <E> void swap(List<E> list, int i, int j); public static void swap(List<?> list, int i, int j);
Welche dieser beiden Erklärungen bevorzugt, und warum? In einer öffentlichen API ist die zweite besser, weil sie einfacher ist. Sie übergeben eine Liste - eine beliebige Liste - und die Methode vertauscht die indizierten Elemente. Es gibt keinen Typ-Parameter, um den Sie sich kümmern müssen. Wenn ein Typparameter in einer Methodendeklaration nur einmal angezeigt wird, ersetzen Sie ihn in der Regel durch einen Platzhalter.
Ich verstehe nicht, warum zweite Option ist einfacher für Client meiner API? Ich kann dieselben Parameter an die erste und zweite Methode weitergeben. Auch die zweite Methode benötigt eine Hilfsmethode für die Wildcard-Erfassung. Könnte jemand erklären, warum der zweite empfohlen wird? Danke!
mögliche Antworten: http://stackoverflow.com/questions/6231973/difference-between-list-list-listt-liste-and-listobject?rq=1 –