Junior
Rääkige lambdaavaldiste ja viitamismeetodite kohta Java programmeerimise kontekstis ning nende kasutamisest Android arenduses.
sobes.tech AI
Vastus AI-lt
Lambda-väljendid on lühike märkus anonüümsete funktsioonide loomiseks. Need võimaldavad edastada funktsionaalsust meetodi argumendina või luua funktsiooni ilma selle nime näitamata. Süntaks: (parameetrid) -> {keha}. Kasutatakse üksik abstraktse meetodiga (funktsionaalsed) liideste rakendamiseks.
Rakendused Androidis:
- sündmuste töötlejad (klõpsud, puutetundmised).
- kuulajaliideste rakendamine (näiteks
OnClickListener,OnCompleteListener). - töö koos Stream API-ga kollektsioonide töötlemiseks (filtreerimine, teisendamine).
// Enne Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Klõps!", Toast.LENGTH_SHORT).show();
}
});
// Lambda-väljendiga
button.setOnClickListener(v -> {
Toast.makeText(context, "Klõps!", Toast.LENGTH_SHORT).show();
});
Viitel meetodid — see on kompaktsem viis viidata olemasolevatele meetoditele või konstruktoritele nende täitmata jätmisega. Need kasutatakse lambda-väljendite asendamiseks, mis lihtsalt kutsuvad ühte meetodit.
Viitel meetodite tüübid:
- Viide staatilisele meetodile:
Klass::staatilineMeetod - Viide objekti eksemplari meetodile:
objekt::meetodiNimi - Viide mis tahes objekti eksemplari meetodile kindla tüübi jaoks:
Tüüp::meetodiNimi - Konstruktorile viide:
Klass::new
Rakendused Androidis:
- Lühendades lambda-väljendeid kuulajatega töötamisel.
- Kasutades Stream API-d meetodite rakendamiseks elementidele.
// Lambda-väljend
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(name -> System.out.println(name));
// Viide
names.forEach(System.out::println);
Eelised:
- Koodi parema loetavuse, eriti lihtsate operatsioonide puhul.
- Kompaktsem kood.
- Stream API kasutamine muudab kollektsioonide töötlemise funktsionaalsemaks ja tõhusamaks.