Sobes.tech
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.