Geben Sie den Parameter vs. unbounded wildcard ein

8

Aus effektivem Java Kapitel 5 (Generics):

%Vor%      

Welche dieser beiden Erklärungen ist vorzuziehen 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 die zweite Option für den Client meiner API einfacher ist? 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!

    
dbf 09.08.2013, 07:31
quelle

1 Antwort

10

Die Java Generics FAQ ist eine großartige Quelle, um diese Art von Fragen zu beantworten und der "Wildcard vs. Generic" wird ausführlich in Was ist besser: eine generische Methode mit Typparametern oder eine nicht-generische Methode mit Platzhaltern? und die nachfolgenden Fallstudien.

Angelika Langer kommt zu dem Schluss:

  

Fazit: In all diesen Beispielen ist es meistens eine Frage des Geschmacks und Stils, ob Sie die generische oder die Wildcard-Version bevorzugen. Es gibt normalerweise einen Kompromiss zwischen der Einfachheit der Implementierung (die generische Version ist oft einfacher zu implementieren) und der Komplexität der Signatur (die Platzhalterversion hat weniger Typparameter oder gar keine).

Einfachere Methodensignatur - & gt; einfacher zu verstehen (auch wenn beide auf die gleiche Weise verwendet werden) - & gt; gut in der öffentlichen API (Kompromiss: komplexere Implementierung)

Aber das Ganze ist ein leichtes Problem und meiner Erfahrung nach ist die Konsistenz über die gesamte API viel wichtiger als der von Ihnen verwendete.

    
xwoker 09.08.2013, 07:41
quelle

Tags und Links