Navigando attraverso le biblioteche Guava ho visto questa firma strano su un metodo readlines dalla classe Files:Java tipo strano ritorno generico
public static <T> T readLines(File file,
Charset charset,
LineProcessor<T> callback)
Conosco un po 'di farmaci generici in Java, ma questo mi ha sconcertato.
Che cosa significa la doppia T qui? E perché il primo è tra parentesi angolari?
UPDATE: Grazie per le risposte. Non sono ancora chiaro perché dovrei usare una T all'interno delle parentesi. Perché ad esempio non può essere solo:
public static <> T readLines()
o
pulibc static <K> T readLines()
O fa impongono che la stessa lettera deve essere utilizzato la sintassi di Java?
Ora this è ancora wierder:
static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
come può un metodo di avere un tipo generico-ritorno e annullate?
La parentesi angolare T in NON è il tipo di ritorno; è il parametro di tipo per il metodo. –
Si noti che se non era presente nelle firme precedenti, il compilatore si aspetterebbe naturalmente di trovare "class T {...}" definita da qualche parte. Qualcosa deve informare il compilatore che vorresti che ci fosse un parametro * di tipo * chiamato T. E questo è il modo. –