Sobes.tech
Junior

Parlez des expressions lambda et des méthodes de référence dans le contexte de la programmation Java et leur utilisation dans le développement Android.

sobes.tech IA

Réponse de l'IA

Les expressions lambda sont une notation concise pour créer des fonctions anonymes. Elles permettent de transmettre une fonctionnalité en tant qu’argument d’une méthode ou de créer une fonction sans spécifier son nom. Syntaxe : (paramètres) -> { corps }. Utilisées pour implémenter des interfaces avec une seule méthode abstraite (interfaces fonctionnelles).

Application dans Android :

  • Gestionnaires d’événements (clics, événements tactiles).
  • Implémentation d’interfaces d’écoute (par exemple, OnClickListener, OnCompleteListener).
  • Travail avec l’API Stream pour traiter des collections (filtrage, transformation).
// Avant Java 8
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(context, "Cliqué!", Toast.LENGTH_SHORT).show();
    }
});

// Avec expression lambda
button.setOnClickListener(v -> {
    Toast.makeText(context, "Cliqué!", Toast.LENGTH_SHORT).show();
});

Les méthodes de référence sont une façon plus compacte de faire référence à des méthodes ou constructeurs existants sans les exécuter. Elles remplacent les expressions lambda qui appellent simplement une méthode.

Types de méthodes de référence :

  • Référence à une méthode statique : Classe::nomMéthodeStatique
  • Référence à une méthode d’un objet instance : objet::nomMéthode
  • Référence à une méthode d’un type arbitraire : Type::nomMéthode
  • Référence à un constructeur : Classe::new

Application dans Android :

  • Réduction de la syntaxe lambda lors de l’utilisation avec des écouteurs.
  • En API Stream pour appliquer des méthodes aux éléments du flux.
// Expression lambda
List<String> noms = Arrays.asList("Alice", "Bob");
noms.forEach(nom -> System.out.println(nom));

// Référence à une méthode
noms.forEach(System.out::println);

Avantages :

  • Amélioration de la lisibilité du code, surtout pour des opérations simples.
  • Code plus compact.
  • L’utilisation dans l’API Stream rend le traitement des collections plus fonctionnel et efficace.