Sobes.tech
Junior

Pastāstiet par lambda izteiksmēm un atsauces metodēm Java programmēšanas kontekstā un to piemērošanu Android izstrādē.

sobes.tech AI

Atbilde no AI

Lambdas izteiksmes ir īss raksturs funkciju izveidei. Tās ļauj nodot funkcionalitāti kā metodes argumentu vai izveidot funkciju bez tās nosaukuma norādīšanas. Sintakse: (parametri) -> {ķermenis}. Tiek izmantotas, lai īstenotu interfeisus ar vienu abstraktu metodi (funkcionālos interfeisus).

Izmanto Android:

  • notikumu apstrādātāji (klikšķi, pieskāriena notikumi).
  • klausītāju interfeisu īstenošana (piemēram, OnClickListener, OnCompleteListener).
  • darbam ar Stream API kolekciju apstrādei (filtrēšana, pārveidošana).
// Pirms Java 8
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(context, "Klikšķis!", Toast.LENGTH_SHORT).show();
    }
});

// Ar lambda izteiksmi
button.setOnClickListener(v -> {
    Toast.makeText(context, "Klikšķis!", Toast.LENGTH_SHORT).show();
});

Saites metodes — tas ir īsāks veids, kā atsaukties uz esošām metodēm vai konstruktoriem, neizpildot tos. Tos izmanto, lai aizstātu lambda izteiksmes, kas vienkārši izsauc vienu metodi.

Saites metodes veidi:

  • Atsauce uz statisku metodi: Klase::statiskāMetode
  • Atsauce uz objekta metodes piemēru: objekts::metodesNosaukums
  • Atsauce uz jebkura objekta piemēra metodi noteiktam tipam: Tips::metodesNosaukums
  • Konstruktora atsauce: Klase::new

Izmanto Android:

  • Saīsināt lambda izteiksmes, strādājot ar klausītājiem.
  • Lietojot Stream API, piemērot metodes elementiem.
// Lambda izteiksme
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(name -> System.out.println(name));

// Atsauce
names.forEach(System.out::println);

Priekšrocības:

  • Labāka koda lasāmība, īpaši vienkāršās operācijās.
  • Kompaktāks kods.
  • Stream API izmantošana padara kolekciju apstrādi funkcionālāku un efektīvāku.