Java generics-Methode Signatur Erläuterung
Was bedeutet diese Allgemeine Signatur der Methode bedeutet
public <S, D> D map(S sourceObject, java.lang.Class<D> destinationClass);
Ich beziehe mich auf den <S, D>
.
Diese Methode gibt ein Objekt vom gleichen Typ, die gesendet wurde, in den zweiten parameter.
Kann ich nicht einfach schreiben
public D map(S sourceObject, java.lang.Class<D> destinationClass);
- Was ist der Unterschied?
- Das ist, warum copy-paste ist gefährlich.
- Zu viel paste, nicht genug geschnitten.
- Lass mich raten, die zweite Lesen sollte
public <D> D map(Object sourceObject, java.lang.Class<D> destinationClass);
. Es ist das gleiche, type-parameterS
ist nicht notwendig. - Okay Jungs. Nichts zu sehen hier in den Kommentaren. bearbeitet die ursprüngliche Frage. und vielen Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das bedeutet, dass diese Methode invocation nimmt zwei Parameter des Typs: S und D.
Den
<S, D>
Teil gemeint ist, als eine Erklärung, dass diese Methode ist generisch und dauert zwei Typ-Parameter, die dann als Platzhalter verwendet, für die eigentlichen Typen in der Methodensignatur.Wenn Sie die Methode aufrufen, entweder Sie liefern die Parameter, die Sie abgeleitet von den Typen der Ausdrücke, die Sie übergeben werden, als Argumente, wie diese:
In diesem Fall S ist
Integer
DString
Ich denke, es gibt noch einen Fehler nach der Korrektur (oder sollten Sie zeigen uns die ganze Klasse, wenn es enthält auch Typ-Parameter), aber ich denke, dass ich deine Frage verstanden; wie bereits erwähnt in den Kommentaren, können Sie einfach loszuwerden, die
S
Typ-parameter, da es nur verwendet einmal in der Signatur der Methode, und ersetzen Sie es mitObject
. Die reduzierte Variante würde dann so Aussehen:<S, D>
bedeutet, dass die Methode generisch ist (unabhängig von der Klasse). Get-Parameter vom TypS
und die KlasseD
(Class<D>
). Und wieder den Wert der type -D
- unabhängig von anderen Arten.