Middle
Kas ir lambda izteiksmes Java un kādas iespējas tās nodrošina?
sobes.tech AI
Atbilde no AI
Java valodā lambda izteiksme ir anonīma funkcija, kas nepieder nevienam klasei un to var nodot kā objektu.
Sintakse: (parametri) -> { ķermenis }
Iespējas:
- Funkcionālais interfeiss: Lambda izteiksme var tikt piešķirta funkcionālam interfeisam (interfeisam ar vienu abstraktu metodi).
// Funkcionālais interfeiss @FunctionalInterface interface MyInterface { void myMethod(); } // Izmantojot lambda izteiksmi MyInterface lambda = () -> System.out.println("Hello from lambda!"); lambda.myMethod(); - Koda vienkāršošana: Aizstāj anonīmas iekšējās klases, kas īsteno funkcionālos interfeisus.
// Pirms Java 8 (anonīma klase) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Old way"); } }); // No Java 8 (lambda) Thread thread2 = new Thread(() -> System.out.println("Lambda way")); - Izmantošana Stream API: Integrējas ar Stream API, lai veiktu operācijas pār kolekcijām.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Lambda izteiksme .forEach(System.out::println); // Metodes atsauce - Aizkavēta izpilde: Kods lambda izteiksmē tiek izpildīts tikai izsaucot funkcionālo metodi.
- Redzamības jomas: Lambda izteiksmes var piekļūt ārējās jomas mainīgajiem (vietējie mainīgie jābūt final vai efektīvi final).
| Priekšrocība | Apraksts |
|---|---|
| Koda īsums | Samazina "garlaicību" salīdzinājumā ar anonīmajām klasēm. |
| Lasāmības uzlabošana | Kods kļūst kodolīgāks un skaidrāks. |
| Paralēla apstrāde | Pārvaldīts ar Stream API paralēlām operācijām. |