Junior
Povedajte o lambda výrazoch a metódach odkazov v kontexte programovania v Jave a ich použití v Android vývoji.
sobes.tech AI
Odpoveď od AI
Lambda výrazy sú stručná notácia na vytváranie anonymných funkcií. Umožňujú odovzdávať funkčnosť ako argument metóde alebo vytvárať funkciu bez určenia jej mena. Syntax: (parametre) -> { telo }. Používajú sa na implementáciu rozhraní s jednou abstraktnou metódou (funkcionálne rozhrania).
Použitie v Android:
- Obsluhovače udalostí (kliknutia, udalosti dotyku).
- Implementácia rozhraní poslucháčov (napríklad
OnClickListener,OnCompleteListener). - Práca s API Stream na spracovanie kolekcií (filterovanie, transformácia).
// Pred Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Kliknuté!", Toast.LENGTH_SHORT).show();
}
});
// S použitím lambda výrazu
button.setOnClickListener(v -> {
Toast.makeText(context, "Kliknuté!", Toast.LENGTH_SHORT).show();
});
Metódy odkazov sú stručnejším spôsobom odkazovania na existujúce metódy alebo konštruktory, bez ich spustenia. Používajú sa na nahradenie lambda výrazov, ktoré iba volajú jednu metódu.
Typy metód odkazov:
- Odkaz na statickú metódu:
Trieda::názovStatickejMetódy - Odkaz na metódu inštancie objektu:
objekt::názovMetódy - Odkaz na metódu inštancie ľubovoľného objektu daného typu:
Typ::názovMetódy - Odkaz na konštruktor:
Trieda::new
Použitie v Android:
- Skrátenie lambda výrazov pri práci s poslucháčmi.
- V API Stream na aplikovanie metód na prvky streamu.
// Lambda
List<String> mená = Arrays.asList("Alice", "Bob");
mená.forEach(meno -> System.out.println(meno));
// Odkaz na metódu
mená.forEach(System.out::println);
Výhody:
- Zlepšuje čitateľnosť kódu, najmä pri jednoduchých operáciách.
- Kompaktnejší kód.
- Použitie v API Stream robí spracovanie kolekcií funkcionálnejším a efektívnejším.