Latest web development tutorials

Выражения Java 8 Lambda

Java 8 новых функций Java 8 новых функций


Лямбда-выражения можно также назвать замыкание, которое должно способствовать наиболее важные новые возможности 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

Java 8 новых функций Java 8 новых функций