Sto cercando di imparare come codificare un metodo per restituire un elenco di oggetti di tipo sconosciuto. Ho trovato questo esempio:
public <T> List<T> list(Class<T> c, List<Object> objectList){
List<T> list = new ArrayList<>();
for (Object o : objectList){
T t = c.cast(o);
list.add(t);
}
return list;
}
Perché è il tipo di ritorno <T> List<T>
invece di semplicemente List<T>
?
risposte:
3 per risposta № 1Questo è perché il tuo list
il metodo ha un argomento di tipo generico a sé stante. <T>
introduce questo tipo:
<T> List<T> list(Class<T> c, List<Object> objectList)
^ ^ ^
| +-------------+----- Use generic type
+--------------------------- Introduce generic type argument for use in the method
L'iniziale <T>
non è richiesto quando i metodi generici usano argomenti di tipo della loro classe di inclusione.
4 per risposta № 2
Questo è non il tipo di ritorno:
public <T> List<T>
Ciò significa semplicemente: T è un parametro generico appena per questo un metodo!
È possibile inserire parametri di tipo su a classe o solo sui metodi Vedete - quando tutti i vostri altri metodi hanno bisogno di un tipo generico ... allora potreste usarlo solo per un singolo metodo come questo.
Vedere Qui per ulteriori letture!
0 per risposta № 3
<T>
non è un tipo di ritorno, definisce il tipo di quel metodo generico. Guarda nella lista dei parametri trovi anche una classe con un tipo generico
0 per risposta № 4
Il tipo di ritorno IS List<T>
.
<T>
è il "modello" / dichiarazione generica: dove si dichiarano i tipi generici. Non penso che sia una parte reale del tipo di risultato (potrebbe essere sbagliato in questo).