Sobes.tech
Junior

Javaда лямбда билдирүүлөрү эмне кылууга мүмкүндүк берет?

sobes.tech AI

AIден жооп

Лямбда-экспрессиялар (Lambda Expressions) Javaда, Java 8те пайда болгон, мүмкүндүк берет:

  • Бир абстракттуу ыкмасын камтыган интерфейстерлерди ишке ашыруу (функционалдык интерфейстерлер): Бул негизги максат. Лямбда-экспрессиялар функционалдык интерфейстерлердин экземплярдарын түзүү үчүн кыска синтаксистти камсыз кылат:
// Java 8ге чейин
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello pre-Java 8!");
    }
};

// Java 8 менен
Runnable lambdaRunnable = () -> System.out.println("Hello Java 8!");
  • Поведениени (функциялар) методторго аргумент катары берүү: Бул Javaда функционалдык программалоонун мүмкүнчүлүктөрүн кеңейтет. Методтор лямбда-экспрессияларды параметр катары кабыл алат:
// Stream API колдонуу мисалы, лямбда менен
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A")) // filter үчүн лямбда
     .forEach(System.out::println);       // forEach үчүн метод шилтемеси
  • Stream API колдонуу: Лямбда-экспрессиялар жаңы Stream APIнин негизин түзөт, ал эффективдүү коллекциялар менен иштөөгө мүмкүндүк берет:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sumOfEven = numbers.stream()
                      .filter(n -> n % 2 == 0)
                      .mapToInt(Integer::intValue)
                      .sum();
  • Аноним ички класстарды функционалдык интерфейстер үчүн жөнөкөйлөтүү: Лямбда-экспрессиялар бул контекстте көп сөздүү аноним класстарды алмаштырат:

  • Коддун окумдуулугун жогорулатуу: Жөнөкөй операциялар үчүн лямбда-экспрессиялар кодду кыска жана түшүнүктүү кылат:

  • Кодду кечиктирип ишке ашыруу мүмкүнчүлүгүн берүү: Лямбда-экспрессия ишке ашырылуучу ишти сүрөттөйт, ал кийинчерээк чакырылат:

Лямбда-экспрессиялар сырткы аймактык өзгөрмөлөргө да жеткиликтүү (эгер алар effectively final болсо).

Жалпысынан, лямбда-экспрессиялар Javaны көбүрөөк экспрессивдүү кылат жана функционалдык программалоо стилине ылайыктуу кылат.