Sobes.tech
Junior

Pogovorite o lambda izrazima i metodama referenci u kontekstu programiranja na Javi i njihovoj primeni u Android razvoju.

sobes.tech АИ

Одговор од АИ

Lambda izrazi su kratka notacija za kreiranje anonimnih funkcija. Omogućavaju prenošenje funkcionalnosti kao argumenta metode ili kreiranje funkcije bez navođenja njenog imena. Sintaksa: (parametri) -> { telo }. Koriste se za implementaciju interfejsa sa jednom apstraktnom metodom (funkcionalni interfejsi).

Primena u Androidu:

  • Obrada događaja (klikovi, događaji dodira).
  • Implementacija interfejsa slušaoca (npr. OnClickListener, OnCompleteListener).
  • Rad sa API-jem Stream za obradu kolekcija (filtriranje, transformacija).
// Pre Java 8
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(context, "Kliknuto!", Toast.LENGTH_SHORT).show();
    }
});

// Sa lambda izrazom
button.setOnClickListener(v -> {
    Toast.makeText(context, "Kliknuto!", Toast.LENGTH_SHORT).show();
});

Metode referenci su kraći način za referenciranje postojećih metoda ili konstruktora, bez njihovog izvršavanja. Koriste se za zamenu lambda izraza koji jednostavno pozivaju jednu metodu.

Tipovi metoda referenci:

  • Referenca na statičku metodu: Klasa::imeStatickeMetode
  • Referenca na metodu instance objekta: objekat::imeMetode
  • Referenca na metodu instance bilo kog objekta određenog tipa: Tip::imeMetode
  • Referenca na konstruktor: Klasa::new

Primena u Androidu:

  • Skraćivanje lambda izraza pri radu sa slušaocima.
  • U API-ju Stream za primenu metoda na elementima toka.
// Lambda
List<String> imena = Arrays.asList("Alice", "Bob");
imena.forEach(ime -> System.out.println(ime));

// Referenca na metodu
imena.forEach(System.out::println);

Prednosti:

  • Poboljšava čitljivost koda, posebno kod jednostavnih operacija.
  • Kompaktniji kod.
  • Korišćenje u API-ju Stream čini obradu kolekcija funkcionalnijom i efikasnijom.