Java 8 – Espressioni Lambda

Oggi ho intenzione di dirti qualcosa che sarà molto utile. Parleremo di un miglioramento su come utilizzare le funzioni in questa amata lingua: Java 8.
Non ci saranno alcuni che hai perso funzioni come parametri o callback, che fino ad ora abbiamo dovuto usare, per Esempio, con la riflessione.

Due nuovi amici entrano in gioco:
Le interfacce funzionali sono la base delle espressioni Lambda e sono definite come qualsiasi interfaccia che ha un singolo Metodo (una parte di qualsiasi altro oggetto che si estende).

Espressioni lambda o funzioni anonime. Sono un modo per esprimere una funzione senza doverlo dichiarare nel modo usuale, ma con una notazione più simile alla matematica.

In questo modo:

< P Style = “Text-Align: giustificare;” >
Sum Integer pubblici (Integer A , Intero b) {
restituisce A + B;
} < / P >

potrebbe essere espresso come:
(A, B) – > A + B

Abbastanza più semplice, giusto?

Ora propongo un caso pratico di un progetto che ho fatto ultimamente.
i metodi in cui devi Costruisci una query Basata su un oggetto che contiene i filtri da applicare, il seguente standard è molto comune:

< P Style = “Text- allinea: giustificare; “> query del vuoto pubblico (filtro filtro) {

if (Filter.GetName ()! = NULL) {
Query .e (“Nome =” + filter.getname ());
}
IF (FILTER.GetEMail ()! = NULL) {
Query.An (“Email =” + Filter.GetEmail ()) ;
}

} < / P >

che potrebbe essere refatturalizzato a qualcosa del genere:

< p style = “testo-align: giustificare;” > PUBBLICA < T > Void IFNOTNULL (articolo T, consumatore < T > Consumer) {
IF (articolo! = NULL) {
Consumer.accept (articolo);
}
} < / P >
P Style = “Allinea il testo : giustificare; “> query del vuoto pubblico (filtro del filtro) {
IFNOTNULL (FILTER.GETNAME (), NOME – > QUERY . E (‘nome =’ + nome);
ifnotnull (filter.getmail (), e-mail – > query.and (‘email =’ + Email);

} < / P

Non riesco a interrompere il mio post oggi senza offrire il riassunto di alcune delle interfacce funzionali che porta per impostazione predefinita Java8, salvarti su di più di un’occasione:


RUNNABILE (VOID – > Void) : Esegui un’azione senza argomenti e non restituisce nulla.

fornitore < T > (Void – > t): esegue un’azione che restituisce un valore di tipo T.
Consumer < T > ( T – > Void): Ricevi un parametro T-Type e non restituire nulla.
BICONSUMER < T, U > (t, u – > void): Ricevi due parametri di tipo T e U e non restituire nulla.
Funzione < T, R > (T – > R): Ricevi un parametro T-T-Type YD Evolve un valore di tipo R: Bifunction < T, U, R

T, U, R > (T, U – > r): riceve due parametri di tipo T e U e restituisce un valore R.
UnarIsterotor < T > (T – > T): Ricevi un parametro T-Type e restituisce un valore dello stesso tipo.
BinaryOpator < T > (T, T – > T): riceve due parametri T tipo T e restituisce un valore dello stesso tipo. (L’esempio della somma prima dellustrato entrerebbe in questa categoria).
predica < T > (T – > booleano): Valuta il parametro T-Type a TRUE / FALSE.


Leave a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *