Documentazione dell'API di Java Stream

0

Attualmente sto imparando Java, quindi questa potrebbe essere una domanda derivante dalla mancanza di comprensione di Java (mentre si sta imparando anche l'API degli Streams)

Nelle dichiarazioni di funzione spesso vedo due tipi di modelli per i valori di ritorno. Ad esempio qui sotto abbiamo <T,U> e anche Collector<T,?,U> . Come dovrei leggere questo? Che restituisce uno dei due tipi possibili? Questo sembra strano dato che ho sempre pensato che le funzioni restituiscano un tipo di dati.

public static <T,U> Collector<T,?,U> reducing(U identity,
                                          Function<? super T,? extends U> mapper,
                                          BinaryOperator<U> op)
    
posta ratchet freak 03.11.2014 - 23:04
fonte

2 risposte

1

Ciò significa che il metodo stesso è generico. Permette la creazione di metodi di utilità statica o l'utilizzo di variabili generiche senza la necessità di includere tali parametri nell'intera classe.

in ordine le parti sono:

  • public : visibilità

  • static : è un metodo statico

  • <T,U> : è un metodo generico con parametri T e U

  • Collector<T,?,U> : restituisce un Collector<T,?,U>

  • reducing : il nome del metodo

  • (U identity,Function<? super T,? extends U> mapper,BinaryOperator<U> op) : la lista parametri

Per chiamare il metodo e specificare i parametri che puoi fare Collectors.<Foo1,Foo2>reducing(...)

    
risposta data 03.11.2014 - 23:16
fonte
1

<T,U> è il metodo che dichiara di utilizzare i tipi generici T e U.

T è il tipo di elementi di input U è il tipo di valori mappati

Il tipo di ritorno è un Collector<T,?,U>

Tratto da javadoc .

Il posto migliore da cui iniziare è con il tutorial su oracle lambda , che tocca su aggregazione e generici.

Quindi guarda aggregazione , e in particolare, maggiori informazioni sulla riduzione in un tutorial di oracle

(disclaimer: opinion based) Questa è probabilmente la cosa più orribile che si possa fare quando si inizia con java. La struttura di aggregazione utilizza la maggior parte dei generici e lambda agonizzanti.

    
risposta data 03.11.2014 - 23:19
fonte

Leggi altre domande sui tag