Ich habe den Code von commons-chain
durchsuchtIch habe eine Menge Methodensignaturen gefunden, die diesem ähneln:
public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)
Wie unterscheidet sich diese Signatur von:
public Command getCommand(String commandID)
Der einzige logische Grund, den ich verstehen konnte, war eine Typprüfung. aber ich konnte immer noch nicht den Grund herausfinden, dies aus Sicht des Designs zu tun.
Gibt es noch weitere Gründe, warum man im Rückgabetyp einer Java-Methode erweitern verwenden würde?
Der Unterschied ist dreifach:
Und als typisierte Methode kann Java den Typ
ableitenAll dies bedeutet, dass dies (ohne Umwandlungen) kompiliert wird:
%Vor%oder
%Vor%Der Compiler wird den Typ für die Methode basierend auf dem Typ der Variable, der das Ergebnis zugewiesen wird, ableiten (dh herausfinden).
Außerdem können Sie explizit eine Unterklasse mit dieser Syntax angeben:
%Vor%Tags und Links java