Sobes.tech
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.