Выраз Лямбда новая функцыя, якая ўводзіцца ў Java 8. лямбда-выраз з'яўляецца ананімнай функцыяй. Функцыя, якая не мае назвы і не належыць ні да аднаго класа. Паняцце лямбда-выразы ўпершыню было ўведзена ў LISP мове праграмавання.
Java Lambda Сінтаксіс выразаў
Для таго, каб стварыць лямбда-выраз, мы задаем ўваходныя параметры (калі такі маецца) на левай баку аператара лямбда -> і змясціць выраз або блок аператараў на правай баку аператара лямбда. Напрыклад, лямбда-выраз (х, у) -> х + у паказвае, што лямбда-выраз прымае два аргументу х і ў і вяртае суму з іх.
// Сінтаксіс лямбда-выразы (Parameter_list) -> {function_body}
лямбда-выразы супраць метаду ў Java
Спосаб (або функцыя) у Java мае наступныя асноўныя часткі:
1. Імя
Спіс 2. Параметр
3. Цела
4. тып звароту.
Лямбда-выразы ў Java мае наступныя асноўныя часткі:
Лямбда - выразы толькі мае цела і спіс параметраў.
1. Без назвы - функцыя не з'яўляецца ананімным , таму мы не клапоцімся пра назву
Спіс 2. Параметр
3. Цела - Гэта асноўная частка функцыі.
4. Няма тыпу якое вяртаецца значэння - Java - 8 кампілятар можа вызначыць тып якое вяртаецца шляхам праверкі коды. вам не трэба згадваць пра гэта ў відавочным выглядзе.
Дзе выкарыстоўваць лямбда ў Java
Для таго, каб выкарыстоўваць лямбда-выразы, вам неабходна альбо стварыць свой уласны функцыянальны інтэрфейс або выкарыстоўваць функцыянальны інтэрфейс загадзя пэўны прадастаўлены Java. Інтэрфейс з толькі адным абстрактным метадам, называецца функцыянальны інтэрфейс (або адзіночны абстрактны інтэрфейс метад), напрыклад: Runnable, якая выклікаецца, ActionListener г.д.
Для таго, каб выкарыстоўваць інтэрфейс функцыі:
Pre Java 8: Мы ствараем ананімныя ўнутраныя класы.
Паведамленне Java 8: Вы можаце выкарыстоўваць лямбда-выраз замест ананімных ўнутраных класаў.
Выраз Прыклад Java Лямбда
Без выкарыстання лямбда - выразы: Да Java 8 мы выкарыстоўвалі ананімны ўнутраны Classe рэалізаваць толькі абстрактны метад функцыянальнага інтэрфейсу.
імпарт java.awt *. імпарт java.awt.event *. грамадскі клас ButtonListenerOldWay { дзяржаўнай статычнай сілы асноўных (String [] Арг) { Рамка кадр = новы кадр ( "ActionListener Перад Java8"); Кнопка б = новая кнопка ( «Націсніце тут»); b.setBounds (50,100,80,50);b.addActionListener (новы ActionListener () { грамадскага несапраўднымі actionPerformed (ActionEvent е) {System.out.println ( "Hello World!");} }); frame.add (б);frame.setSize (200200); frame.setLayout (нуль); frame.setVisible (ісціна);} }
Пры выкарыстанні лямбда - выразы: Замест таго каб стварыць ананімнага ўнутранага класа, мы можам стварыць лямбда - выразы , як гэта:
імпарт java.awt *. грамадскі клас ButtonListenerNewWay { дзяржаўнай статычнай сілы асноўных (String [] Арг) { Рамка кадр = новы кадр ( "ActionListener java8"); Кнопка б = новая кнопка ( «Націсніце тут»); b.setBounds (50,100,80,50); b.addActionListener (е -> System.out.println ( "Hello World!"));frame.add (б); frame.setSize (200200); frame.setLayout (нуль); frame.setVisible (ісціна); } }
нататка:
1. Як вы можаце бачыць, што мы выкарыстоўвалі менш кода з лямбда-выразы.
2. Зваротная сумяшчальнасць: Вы можаце выкарыстоўваць лямбда-выразы са старым кодам. Лямбда мае зваротную сумяшчальнасць, так што вы можаце выкарыстоўваць іх у існуючых API пры пераносе праекта на Java 8.
Давайце паглядзім яшчэ некалькі прыкладаў выразаў лямбда.
Прыклад 1: Java, лямбда-выразы без якога-небудзь параметру
@FunctionalInterface Інтэрфейс MyFunctionalInterface { // Метад без якога-небудзь параметру Радок SayHello грамадскасці (); } грамадскі клас Прыклад {дзяржаўны статычны сіла асноўны (String Арг []) { // лямбда-выразы MyFunctionalInterface тзд = () -> { вярнуцца "Hello"; }; System.out.println (msg.sayHello ()); } }
выхад:
добры дзень
Прыклад 2: Java, лямбда-выразы з адным параметрам
@FunctionalInterface Інтэрфейс MyFunctionalInterface { // Метад з адным параметрам грамадскі ИНТ incrementByFive (ідэалам а); } грамадскі клас Прыклад {дзяржаўны статычны сіла асноўны (String Арг []) { // лямбда-выраз з адным параметрам NUM MyFunctionalInterface F = (лік) -> Num + 5; System.out.println (f.incrementByFive (22)); } }
выхад:
27
Прыклад 3: Java Lambda Expression з некалькімі параметрамі
Інтэрфейс StringConcat { Радок грамадскага sconcat (String а, радок б); } грамадскі клас Прыклад {дзяржаўны статычны сіла асноўны (String Арг []) { // лямбда-выразы з некалькімі аргументамі StringConcat S = (str1, str2) -> str1 + str2; System.out.println ( "Вынік:" + s.sconcat ( "Hello", "Мір")); } }
выхад:
Вынік: Hello World
Прыклад 4: перабор калекцыя з выкарыстаннем цыкла Еогеаспа
імпарт java.util. *; грамадскі клас Прыклад { дзяржаўнай статычнай сілы асноўных (String [] Арг) { List <String> спіс = новы ArrayList <String> (); list.add ( "Rick"); list.add ( "Negan"); list.add ( "Дэрыл"); list.add ( "Глен"); list.add ( "Карл"); list.forEach ( // лямбда-выразы (Імёны) -> System.out.println (імёны) ); } }
Мы можам перабіраць карты і іншыя класы калекцый з выкарыстаннем лямбда - выразы, глядзіце гэта кіраўніцтва: ітэрацыі Карта і спіс з дапамогай лямбда - выразы
Пакінуць каментар