Перейти к контенту

Лямбда-выражение в Java 8

Лямбда-выражения введены в Java 8 и рекламируются как самая большая особенность Java 8. Они облегчают функциональное программирование и значительно упрощают разработку.

Синтаксис

Лямбда-выражение характеризуется следующим синтаксисом.

 

parameter -> expression body

Ниже приведены важные характеристики лямбда-выражения.

  • Необязательное объявление типа — не нужно объявлять тип параметра. Компилятор может вывести то же самое из значения параметра.
  • Необязательные круглые скобки вокруг параметра — не нужно объявлять один параметр в круглых скобках. Для нескольких параметров требуются скобки.
  • Необязательные фигурные скобки — нет необходимости использовать фигурные скобки в теле выражения, если тело содержит один оператор.
  • Необязательное ключевое слово return — компилятор автоматически возвращает значение, если в теле есть одно выражение для возврата значения. Фигурные скобки необходимы, чтобы указать, что выражение возвращает значение.

Пример лямбда-выражений

Создайте следующую Java-программу, используя любой редактор по вашему выбору, например, в C: \> JAVA.

Java8Tester.java

public class Java8Tester {
   public static void main(String args[]) {
      Java8Tester tester = new Java8Tester();
      //with type declaration
      MathOperation addition = (int a, int b) -> a + b;
      //with out type declaration
      MathOperation subtraction = (a, b) -> a - b;
      //with return statement along with curly braces
      MathOperation multiplication = (int a, int b) -> { return a * b; };
      //without return statement and without curly braces
      MathOperation division = (int a, int b) -> a / b;
      System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
      System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
      System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
      System.out.println("10 / 5 = " + tester.operate(10, 5, division));
      //without parenthesis
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
      //with parenthesis
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
      greetService1.sayMessage("Mahesh");
      greetService2.sayMessage("Suresh");
   }
   interface MathOperation {
      int operation(int a, int b);
   }
   interface GreetingService {
      void sayMessage(String message);
   }
   private int operate(int a, int b, MathOperation mathOperation) {
      return mathOperation.operation(a, b);
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом:

C:\JAVA>javac Java8Tester.java

Теперь запустите Java8Tester следующим образом.

C:\JAVA>java Java8Tester

Итог

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh

Ниже приведены важные моменты, которые необходимо учитывать в приведенном выше примере.

  • Лямбда-выражения в основном используются для определения встроенной реализации функционального интерфейса, т. е. Интерфейса только с одним методом. В приведенном выше примере мы использовали лямбда-выражения различных типов для определения метода работы интерфейса MathOperation. Затем мы определили реализацию sayMessage из GreetingService.
  • Лямбда-выражение устраняет необходимость в анонимном классе и дает Java очень простую, но мощную функциональную возможность программирования.

Объем

Используя лямбда-выражение, вы можете ссылаться на любую конечную переменную или фактически конечную переменную (которая назначается только один раз). Лямбда-выражение выдает ошибку компиляции, если переменной присваивается значение во второй раз.

Пример области применения

Создайте следующую программу, используя любой редактор по вашему выбору, например, в C: \> JAVA.

Java8Tester.java

public class Java8Tester {
   final static String salutation = "Hello! ";
   public static void main(String args[]) {
      GreetingService greetService1 = message -> 
      System.out.println(salutation + message);
      greetService1.sayMessage("Mahesh");
   }
   interface GreetingService {
      void sayMessage(String message);
   }
}

Проверьте результат

Скомпилируйте класс с помощью компилятора javac следующим образом.

C:\JAVA>javac Java8Tester.java

Теперь запустите Java8Tester следующим образом.

C:\JAVA>java Java8Tester

Итог

Hello! Mahesh

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)