erweitert das Schlüsselwort im Rückgabetyp in der Java-Methodensignatur

8

Ich habe den Code von commons-chain

durchsucht

Ich 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?

    
shoubhik 20.04.2013, 23:40
quelle

1 Antwort

4

Der Unterschied ist dreifach:

  1. Der zurückgegebene Typ ist typed (kein unformatierter Typ)
  2. Der zurückgegebene Typ kann eine bestimmte Unterklasse
  3. sein
  4. Die Methode hat Zugriff auf die Typen K, V und C

Und als typisierte Methode kann Java den Typ

ableiten

All 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%     
Bohemian 21.04.2013, 00:52
quelle

Tags und Links