Junior
Parla delle espressioni lambda e dei metodi di riferimento nel contesto della programmazione Java e della loro applicazione nello sviluppo Android.
sobes.tech AI
Risposta dell'AI
Le espressioni lambda sono una notazione concisa per creare funzioni anonime. Permettono di passare funzionalità come argomento di un metodo o di creare una funzione senza specificarne il nome. Sintassi: (parametri) -> { corpo }. Sono usate per implementare interfacce con un solo metodo astratto (interfacce funzionali).
Applicazione in Android:
- Gestori di eventi (clic, eventi touch).
- Implementazione di interfacce di ascolto (ad esempio,
OnClickListener,OnCompleteListener). - Lavoro con l’API Stream per elaborare collezioni (filtraggio, trasformazione).
// Prima di Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Cliccato!", Toast.LENGTH_SHORT).show();
}
});
// Con espressione lambda
button.setOnClickListener(v -> {
Toast.makeText(context, "Cliccato!", Toast.LENGTH_SHORT).show();
});
I metodi di riferimento sono un modo più compatto per fare riferimento a metodi o costruttori esistenti senza eseguirli. Sono usati per sostituire le espressioni lambda che chiamano semplicemente un metodo.
Tipi di metodi di riferimento:
- Riferimento a metodo statico:
Classe::nomeMetodoStatico - Riferimento a metodo di istanza di un oggetto:
oggetto::nomeMetodo - Riferimento a metodo di istanza di un tipo arbitrario:
Tipo::nomeMetodo - Riferimento a costruttore:
Classe::new
Applicazione in Android:
- Accorciare le espressioni lambda quando si lavora con gli ascoltatori.
- Nella API Stream per applicare metodi agli elementi dello stream.
// Lambda
List<String> nomi = Arrays.asList("Alice", "Bob");
nomi.forEach(nome -> System.out.println(nome));
// Riferimento a metodo
nomi.forEach(System.out::println);
Vantaggi:
- Miglior leggibilità del codice, soprattutto in operazioni semplici.
- Codice più compatto.
- L’uso nell’API Stream rende l’elaborazione delle collezioni più funzionale ed efficiente.