Middle
Java-ში ლამბდა გამოთქმები რა არის და რა შესაძლებლობებს იძლევა?
sobes.tech AI
პასუხი AI-სგან
Java-да лямбда-экспрессия — бұл анонимді функция, ол қандай да бір классқа тиесілі емес және объект ретінде берілуі мүмкін.
Синтаксисі: (параметрлер) -> { дене }
Мүмкіндіктері:
- Функционалды интерфейс: Лямбда-экспрессия функционалды интерфейс типіне (бір абстрактілі әдісі бар интерфейс) тағайындалуы мүмкін.
// Функционалды интерфейс @FunctionalInterface интерфейс MyInterface { void myMethod(); } // Лямбда-экспрессияны пайдалану MyInterface lambda = () -> System.out.println("Hello from lambda!"); lambda.myMethod(); - Кодты оңайлату: Анонимді ішкі кластарды функционалды интерфейстерді жүзеге асыру үшін ауыстырады.
// Java 8-ге дейін (анонимді класс) Thread thread1 = new Thread(new Runnable() { @Override public void run() { System.out.println("Old way"); } }); // Java 8-ден бастап (лямбда) Thread thread2 = new Thread(() -> System.out.println("Lambda way")); - Stream API-да пайдалану: Stream API-мен біріктіріліп, коллекциялар бойынша операциялар орындау.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.stream() .filter(name -> name.startsWith("A")) // Лямбда-экспрессия .forEach(System.out::println); // Лямбда-экспрессия (әдіс-сілтеме) - Кешіктірілген орындалу: Лямбда-экспрессия ішіндегі код тек функционалды әдіс шақырылғанда орындалады.
- Көрінетін аймақтар: Лямбда-экспрессиялар сыртқы аймақтан айнымалыларды қамти алады (жергілікті айнымалылар финалды немесе effectively final болуы керек).
| Артықшылығы | Сипаттамасы |
|---|---|
| Кодтың қысқалығы | Анонимді кластарға қарағанда "көпсөзділікті" азайтады. |
| Оқылуын жаксарту | Кодты ықшам әрі түсінікті кылат. |
| Жаппай иштетүү | Stream API аркылуу параллель операцияларды колдойт. |