Рубрики
Без рубрики

Java 8 Лямбда 表达式简介

Лямбда-выражение – это анонимная функция (это не совсем правильно для Java, но давайте подумаем об этом сейчас). Проще говоря, это необъявленный метод, то есть в нем нет модификатора доступа, объявления возвращаемого значения и имени.Это Самая важная новая функция в Java 8. J… Помеченный java.

java (Серия из 2 частей)

Лямбда-выражение – это анонимная функция (это не совсем правильно для Java, но давайте подумаем об этом сейчас). Проще говоря, это необъявленный метод, то есть в нем нет модификатора доступа, объявления возвращаемого значения и имени.Это Самая важная новая функция в Java 8.

Лямбда-выражения в Java обычно пишутся с использованием синтаксиса (аргументы)-> (выражение).Ниже приведены важные характеристики лямбда-выражений:

  • Необязательные параметры : Лямбда-выражения могут иметь ноль или более параметров.
  • Необязательное объявление типа : Нет необходимости объявлять тип параметра, и компилятор может единообразно идентифицировать значение параметра.
  • Необязательные скобки параметров : Один параметр не нуждается в определении скобок, но несколько параметров должны определять скобки.
  • Необязательные фигурные скобки : Если тело содержит оператор, нет необходимости использовать фигурные скобки.
  • Необязательное ключевое слово return : Если в теле есть только одно возвращаемое значение выражения, компилятор автоматически вернет значение. Фигурные скобки должны указывать, что выражение возвращает числовое значение.

Вот несколько примеров лямбда-выражений:

 // 无argument,直接return值
 () -> "Andy"

 // 接收一个argurment, return一个计算值
 x -> 2 * x  

 // 接收2个arguments, return一个计算值  
 (int x, int y) -> { return x – y; }  

 // 接受一个string, 并println, 不return任何值  
 (String s) -> { System.out.println(s); }

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

 // 旧方法:
 new Thread(new Runnable() {
     @Override
     public void run() {
         System.out.println("Hello from thread");
     }
 }).start();

 // Lambda方法:
 new Thread( () -> System.out.println("Hello from thread") ).start();

Роль следующего кода состоит в том, чтобы распечатать все элементы в заданном массиве.Обратите внимание, что существует несколько способов использования лямбды.В следующем примере мы сначала используем часто используемый синтаксис стрелки для создания лямбды, а затем используем Java 8 Совершенно новый оператор двойного двоеточия (::) преобразует обычный метод в лямбда:

 // 旧方法:
 List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
 for(Integer n: list) {
    System.out.println(n);
 }

 // Lambda方法:
 List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
 list.forEach(n -> System.out.println(n));


 // ::操作
 list.forEach(System.out::println);

Область действия переменной

Лямбда может ссылаться только на внешние локальные переменные, помеченные как final, что означает, что локальные переменные, определенные вне домена, не могут быть изменены внутри лямбды, иначе она будет скомпилирована неправильно.

Не допускается объявлять параметр или локальную переменную с тем же именем, что и локальная переменная в лямбда-выражении.

java (Серия из 2 частей)

Оригинал: “https://dev.to/andylow/java-8-lambda-5214”