Junior
Java dasturlash kontekstida lambda ifodalar va referens metodlari haqida gapiring va ularning Android rivojlanishidagi qo'llanilishini tushuntiring.
sobes.tech AI
AIdan javob
Lambda ifadələri anonim funksiyalar yaratmaq üçün qısa notasyadır. Onlar funksionallığı metodun arqumenti kimi ötürməyə və ya adını göstərmədən funksiya yaratmağa imkan verir. Sintaksis: (parametrlər) -> { bədən }. Bu, tək abstrakt metoda (funksional interfeyslər) olan interfeysləri həyata keçirmək üçün istifadə olunur.
Android-da tətbiqi:
- Hadisə idarəediciləri (kliklər, toxunma hadisələri).
- Dinləyici interfeyslərinin həyata keçirilməsi (məsələn,
OnClickListener,OnCompleteListener). - Kolleksiyaları emal etmək üçün Stream API ilə işləmək (filtrləmə, çevirmə).
// Java 8-dən əvvəl
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Kliklendi!", Toast.LENGTH_SHORT).show();
}
});
// Lambda ifadəsi ilə
button.setOnClickListener(v -> {
Toast.makeText(context, "Kliklendi!", Toast.LENGTH_SHORT).show();
});
İstinad metodları mövcud metodlara və ya konstruktorlara istinad etmək üçün daha qısa yoldur və onları icra etmir. Bu, sadəcə bir metod çağıran lambda ifadələrini əvəz etmək üçün istifadə olunur.
İstinad metodlarının növləri:
- Statik metoda istinad:
Sinif::statikMetod - Obeyektin nümunə metoduna istinad:
obyekt::metodAdı - Hər hansı obyektin nümunə metoduna istinad:
Növ::metodAdı - Konstruktoru istinad:
Sinif::new
Android-da tətbiqi:
- Dinləyicilərlə işləyərkən lambda ifadələrini qısaltmaq.
- Stream API-də metodları elementlərə tətbiq etmək.
// Lambda
List<String> adlar = Arrays.asList("Alice", "Bob");
adlar.forEach(ad -> System.out.println(ad));
// Metod istinadı
adlar.forEach(System.out::println);
Üstünlüklər:
- Kodun oxunaqlığını yaxşılaşdırır, xüsusən sadə əməliyyatlar üçün.
- Daha qısa kod.
- Stream API-də istifadə, kolleksiyaların işlənməsini daha funksional və səmərəli edir.