/ / Java Generics Return Type Sintassi [duplicato] - java, list, generics

Java Generics Return Type Sintassi [duplicato] - java, list, generics

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 № 1

Questo è 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).