Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni3 pagine

Method Reference Vs Lambda

Il documento spiega la differenza tra method reference e lambda in Java, evidenziando che un method reference è una forma abbreviata di lambda che richiama direttamente un metodo esistente. Vengono descritti i principali tipi di method reference, inclusi metodi statici, metodi d'istanza su oggetti specifici, metodi d'istanza su parametri e costruttori, con esempi pratici per ciascun tipo. Infine, viene specificato che è possibile sostituire una lambda con un method reference solo se la lambda chiama direttamente un metodo esistente e i tipi dei parametri coincidono.

Caricato da

leomiccinematic
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni3 pagine

Method Reference Vs Lambda

Il documento spiega la differenza tra method reference e lambda in Java, evidenziando che un method reference è una forma abbreviata di lambda che richiama direttamente un metodo esistente. Vengono descritti i principali tipi di method reference, inclusi metodi statici, metodi d'istanza su oggetti specifici, metodi d'istanza su parametri e costruttori, con esempi pratici per ciascun tipo. Infine, viene specificato che è possibile sostituire una lambda con un method reference solo se la lambda chiama direttamente un metodo esistente e i tipi dei parametri coincidono.

Caricato da

leomiccinematic
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

METHOD REFERENCE vs LAMBDA

Un method reference è una forma abbreviata di lambda che richiama direttamente un


metodo già esistente.​
Serve solo quando la lambda non aggiunge logica, ma si limita a chiamare un metodo.

1️⃣ Tipi principali di method reference


Tipo Esempio con lambda Versione con method Significato
reference

A. Metodo (x, y) -> [Link](x, Math::max Richiama un


statico y) metodo statico di
una classe.

B. Metodo () -> [Link]() a::suona Richiama un


d’istanza su un metodo di un
oggetto oggetto già
specifico esistente.

C. Metodo (s1, s2) -> String::compareTo Il primo


d’istanza su [Link](s2) parametro
parametro chiama il metodo
sul secondo.

D. Costruttore () -> new Studente() Studente::new Crea un nuovo


oggetto usando il
costruttore.

2️⃣ Esempi pratici


A. Metodo statico
Comparator<Integer> cmp = (a, b) -> [Link](a, b);
// equivalente a:
Comparator<Integer> cmp2 = Integer::compare;

B. Metodo d’istanza su oggetto specifico


class Allarme {
void suona() { [Link]("Allarme!"); }
}

Allarme a = new Allarme();


Runnable r = () -> [Link]();
// equivalente a:
Runnable r = a::suona; // method reference valido
[Link](); // stampa "Allarme!"

C. Metodo d’istanza sul parametro


Comparator<String> cmp = (a, b) -> [Link](b);
// equivalente a:
Comparator<String> cmp2 = String::compareToIgnoreCase;

D. Costruttore
Supplier<Studente> s1 = () -> new Studente();
// equivalente a:
Supplier<Studente> s2 = Studente::new;

3️⃣ Quando si può usare


Puoi sostituire una lambda con un method reference solo se:

●​ la lambda chiama direttamente un metodo già esistente;​

●​ i tipi dei parametri e del valore di ritorno coincidono con quelli del metodo.​

Se nella lambda fai altro (es. operazioni aggiuntive o condizioni), non puoi sostituirla.

4️⃣ Esercizi brevi per capire


1.​ Comparator<String> cmp = (a, b) -> [Link](b); → diventa
String::compareTo.​

2.​ Runnable r = () -> saluta(); → diventa NomeClasse::saluta.​

3.​ Supplier<Double> s = () -> [Link](); → diventa Math::random.​

4.​ Consumer<String> c = s -> [Link](s); → diventa


[Link]::println.​

5.​ Supplier<Studente> s = () -> new Studente(); → diventa


Studente::new.​

Potrebbero piacerti anche