Sobes.tech
Middle

Ի՞նչ են Java-ում լամբդա արտահայտությունները և ինչ հնարավորություններ են դրանք առաջարկում:

sobes.tech AI

Պատասխան AI-ից

Java-да лямбда-экспрессия — бұл анонимді функция, ол қандай да бір классқа тиесілі емес және объект ретінде берілуі мүмкін.

Синтаксисі: (параметрлер) -> { дене }

Мүмкіндіктері:

  1. Функционалды интерфейс: Лямбда-экспрессия функционалды интерфейс типіне (бір абстрактілі әдісі бар интерфейс) тағайындалуы мүмкін.
    // Функционалды интерфейс  
    @FunctionalInterface  
    интерфейс MyInterface {  
        void myMethod();  
    }  
    
    // Лямбда-экспрессияны пайдалану  
    MyInterface lambda = () -> System.out.println("Hello from lambda!");  
    lambda.myMethod();  
    
  2. Кодты оңайлату: Анонимді ішкі кластарды функционалды интерфейстерді жүзеге асыру үшін ауыстырады.
    // 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"));  
    
  3. Stream API-да пайдалану: Stream API-мен біріктіріліп, коллекциялар бойынша операциялар орындау.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");  
    names.stream()  
         .filter(name -> name.startsWith("A")) // Лямбда-экспрессия  
         .forEach(System.out::println);        // Лямбда-экспрессия (әдіс-сілтеме)  
    
  4. Кешіктірілген орындалу: Лямбда-экспрессия ішіндегі код тек функционалды әдіс шақырылғанда орындалады.
  5. Көрінетін аймақтар: Лямбда-экспрессиялар сыртқы аймақтан айнымалыларды қамти алады (жергілікті айнымалылар финалды немесе effectively final болуы керек).
Артықшылығы Сипаттамасы
Кодтың қысқалығы Анонимді кластарға қарағанда "көпсөзділікті" азайтады.
Оқылуын жақсарту Кодты ықшам әрі түсінікті етеді.
Жаппай өңдеу Stream API арқылы параллель операцияларды қолдайды.