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 аркылуу параллель операцияларды колдойт.