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.