2013-04-20 10 views
8

szedłem kodeksu commons-chainrozciąga słowa kluczowego w rodzaju powrotnego w podpis metody Java

Znalazłem wiele podpisów metody przypominające to jedno:

public <CMD extends Command<K, V, C>> CMD getCommand(String commandID)

Jak to jest podpis inaczej od:

public Command getCommand(String commandID)

jedyny logiczny powód, dla którego rozumieć, że to sprawdzanie typu. ale wciąż nie mogłem znaleźć powodu, aby zrobić to z punktu widzenia projektu.

Czy jest jeszcze jeden powód, dla którego można by go użyć i rozszerza w typie zwrotnym metody java?

Odpowiedz

4

Różnica trzy cele:

  1. typu zwrócony jest wpisane (nie typ surowy)
  2. typu zwrócone może być specyficzne podklasy
  3. Sposób dostęp do rodzajów K, V i C

i jest sposób maszynowy Java może ustalić typ

Wszystko to oznacza, że ​​będzie kompilować (bez poświaty):

Command<String, Integer, String> x = getCommand(commandID); 

lub

SomeTypedSubClassOfCommand x = getCommand(commandID); 

Kompilator będzie wnioskować (tj dowiedzieć) typ dla metody w oparciu o typ zmiennej wynik jest przypisany do.

Ponadto można jednoznacznie określić podklasę z tej składni:

Command<String, Integer, String> x = ContainingClass.<CommandSubClass<String, Integer, String>>getCommand(commandID); 
+0

dzięki. tylko wyjaśnienie, którego szukałem. – shoubhik

Powiązane problemy