Junior
Pověz o lambda výrazech a metodách odkazů v kontextu programování v jazyce Java a jejich použití v Android vývoji.
sobes.tech AI
Odpověď od AI
Lambda výrazy jsou stručná notace pro vytváření anonymních funkcí. Umožňují předávat funkčnost jako argument metody nebo vytvářet funkci bez určení jejího jména. Syntaxe: (parametry) -> { tělo }. Používají se k implementaci rozhraní s jednou abstraktní metodou (funkcionální rozhraní).
Použití v Androidu:
- Obsluhovače událostí (kliknutí, dotykové události).
- Implementace posluchačských rozhraní (například
OnClickListener,OnCompleteListener). - Práce s API Stream pro zpracování kolekcí (filtrace, transformace).
// Před Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Kliknuto!", Toast.LENGTH_SHORT).show();
}
});
// S použitím lambda výrazu
button.setOnClickListener(v -> {
Toast.makeText(context, "Kliknuto!", Toast.LENGTH_SHORT).show();
});
Metody odkazů jsou stručnější způsoby odkazování na existující metody nebo konstruktory, aniž by je bylo třeba spouštět. Používají se k nahrazení lambda výrazů, které pouze volají jednu metodu.
Typy metod odkazů:
- Odkaz na statickou metodu:
Třída::názevStatickéMetody - Odkaz na metodu instance objektu:
objekt::názevMetody - Odkaz na metodu instance libovolného objektu daného typu:
Typ::názevMetody - Odkaz na konstruktor:
Třída::new
Použití v Androidu:
- Zkrácení lambda výrazů při práci s posluchači.
- V API Stream pro použití metod na prvcích streamu.
// Lambda
List<String> jmena = Arrays.asList("Alice", "Bob");
jmena.forEach(jmeno -> System.out.println(jmeno));
// Odkaz na metodu
jmena.forEach(System.out::println);
Výhody:
- Zlepšení čitelnosti kódu, zejména u jednoduchých operací.
- Kompaktnější kód.
- Použití v API Stream činí zpracování kolekcí více funkcionální a efektivnější.