Выражения Java 8 Lambda
Лямбда-выражения можно также назвать замыкание, которое должно способствовать наиболее важные новые возможности Java 8 выпуска.
Лямбда разрешено функционировать в качестве параметра метода (функции передается в качестве параметра в метод).
Лямбда-выражения могут использовать код становится более простым и компактным.
грамматика
Синтаксис лямбда-выражение выглядит следующим образом:
(parameters) -> expression 或 (parameters) ->{ statements; }
Ниже приведены важные характеристики лямбда-выражений:
- Дополнительный тип декларации: нет необходимости объявлять типы параметров, компилятор может быть унифицирована значение параметра идентификации.
- Опциональные параметры , указанные в скобках:параметр , определенный без скобок, но ряд параметров должны быть определены круглые скобки.
- Дополнительные фигурные скобки: если тело содержит заявление о том , что вам не нужны фигурные скобки.
- Дополнительные возвращенные ключевые слова: Если объект только одно выражение , которое возвращает значение, то компилятор будет автоматически возвращать значение, фигурные скобки необходимо указать четкое выражение , которое возвращает значение.
Лямбда-выражения Примеры
В Java8Tester.java файле введите следующий код:
public class Java8Tester { public static void main(String args[]){ Java8Tester tester = new Java8Tester(); // 类型声明 MathOperation addition = (int a, int b) -> a + b; // 不用类型声明 MathOperation subtraction = (a, b) -> a - b; // 大括号中的返回语句 MathOperation multiplication = (int a, int b) -> { return a * b; }; // 没有大括号及返回语句 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)); // 不用括号 GreetingService greetService1 = message -> System.out.println("Hello " + message); // 用括号 GreetingService greetService2 = (message) -> System.out.println("Hello " + message); greetService1.sayMessage("w3big"); greetService2.sayMessage("Google"); } 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 Java8Tester.java $ java Java8Tester 10 + 5 = 15 10 - 5 = 5 10 x 5 = 50 10 / 5 = 2 Hello w3big Hello Google
Использование лямбда-выражений отметить следующие моменты:
- Лямбда-выражения в основном используются в интерфейсах определения линии метод для выполнения, например, простой способ взаимодействия. В приведенном выше примере, мы используем различные типы лямбда-выражений, чтобы определить методы MathOperation интерфейс. Затем мы определяем выполнение sayMessage.
- Лямбда-выражения анонимный метод исключает использование громоздкого и данной функции 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("w3big"); } interface GreetingService { void sayMessage(String message); } }
Реализация выше сценария выход:
$ javac Java8Tester.java $ java Java8Tester Hello! w3big