




Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Intro sull'utilizzo delle lamba expression in Java
Tipologia: Appunti
1 / 8
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





Vantaggi di usare la lambda: Include la programmazione funzionale (è un nuovo paradigma, diverso dall’OOP in certi aspetti) Codice piu leggibile e coinciso Semplice nell’utilizzare API e librerie Consente il supporto per processi paralleli(nei processori multi core) Functional Programming vs OOP Functional Programming non ci consente niente di piu di quello che si poteva fare in precedenza. Quello che ci consente il functional Programming è di scrivere al meglio codice,molto piu leggibile e piu stabile (da pensare come se fosse un altro paradigma/tool – che non sostituisce ovviamente il paradigma dell’OOP – è uno strato in piu all’OOP ed entra in gioco nei giusti contesti ) Le lambda ci consentono di creare entità/actions che sono solo funzioni che non appartengono alla classe (cio mi differisce dal concetto di OOP). per questo il nome lambda expression Le lambda non appartengono alla classe,non sono metodi di una classe; sono solo funzioni isolate e queste funzioni possono essere trattate come valori. (io in questo caso posso associare pezzi di codice e non l’esecuzione, ad una variabile ) L’ associare un blocco di codice ad una variabile si puo fare tramite le lambda Esempio: public nelle lambda è superfluo perche ovviamente è utile in un contesto di ‘classe’ e le lambda a quanto detto, sono isolate codeBlock = public void stampa() { superfluo perche per riferisci al blocco di codice richiamo direttamente la variabile codeBlock non è necessario inserire il tipo di ritorno perche il compilatore è piu intelligente di prima e capisce quando una lambda deve ritornare qualcosa(string o altro) oppure void analizzando semplicemente il blocco di codice
System.out.println(“ciao”); } ci sono delle cose extra che a noi non servono L’unica cosa che rimane alla fine della firma del metodo sono le ‘()’ per i parametri in input e {} per definire il blocco di codice(si possono togliere che il codice è in una sola riga). E’ obbligatorio inserire prima delle graffe, una freccia “->” per definire che è una lambda Esempio semplice di lambda senza parametri in input: greetExpression = () -> {System.out.println(“ciao”) Esempio di lambda con parametri in input: greetExpression= (int a) -> a+2; dato che inline non c’è bisogno delle {} e della keyword return Le lambda contengono dei comportamenti,action e cio ci consente di risparmiare un mucchio di codice perche prima del java 8 per fare una cosa del genere era necessario (questo in modo elegante) creare un’interfaccia contente dei metodi e in base all’impl dell’interfaccia gestire l’actions (vedere esempio su ecplise -workspace -lambda)
con Java 8 è stato definito un nuovo metodo di iterazione interna (interno perche lasci il controllo a qualcos'altro). Noi infatti definiamo solo l'intento di iterare una lista con Java 8, ogni collection presenta un nuovo metodo chiamato .foreach il metodo foreach accetta come parametro una lambda (istanza di Consumer) -- --> per ogni item in collection eseguimi una particolare lambda Uno dei vantaggi del foreach è che non è sequenziale (a differenza del ciclo for e foreach) cioe posso usarlo in multithread e multiprocessi people.forEach(System.out::println);
ritorna true o false in base alla condizione specificata)