Latest web development tutorials

Java 8 wyrażenia lambda

Java 8 nowych funkcji Java 8 nowych funkcji


wyrażenia lambda mogą być również nazywane zamknięcia, jakim jest promowanie nowych najważniejsze cechy Javy 8 wydaniu.

Lambda może działać jako parametr sposobu (funkcja jako parametr do metody).

wyrażenia lambda może wykorzystać kod staje się bardziej prosta i zwarta.

gramatyka

Składnia wyrażeń lambda jest w następujący sposób:

(parameters) -> expression
或
(parameters) ->{ statements; }

Poniżej znajdują się ważne cechy wyrażeń lambda:

  • Opcjonalnie deklaracji typu: nie ma potrzeby deklarowania typów parametrów, kompilator może być ujednolicone wartości parametru identyfikacji.
  • Opcjonalne parametry w nawiasach: parametr zdefiniowany bez nawiasów, ale ilość parametrów należy zdefiniować nawiasy.
  • Opcjonalne szelki: jeśli ciało zawiera oświadczenie, że nie potrzeba szelki.
  • Opcjonalne słowa kluczowe Powrót: Jeżeli obiekt jest tylko jedno wyrażenie, które zwraca wartość, kompilator automatycznie powróci wartość, szelki trzeba określić wyraźną ekspresję, która zwraca wartość.

Przykłady wyrażeń lambda

W pliku Java8Tester.java wprowadź następujący kod:

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);
   }
}

Realizacja powyższego scenariusza, wyjście jest:

$ javac Java8Tester.java 
$ java Java8Tester
10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello w3big
Hello Google

Użyj wyrażeń lambda, aby zwrócić uwagę na następujące kwestie:

  • wyrażenia lambda są głównie stosowane w interfejsach liniowych definicji metody do wykonania, na przykład, w prosty sposób do interfejsu. W powyższym przykładzie, używamy różnego rodzaju wyrażeń lambda zdefiniowanie metod MathOperation interfejs. Następnie określamy wykonanie sayMessage.
  • Sposób wyrażenia lambda anonimowe eliminuje użycie kłopotliwy i danej funkcji Java prostych, ale potężnych możliwościach programowania.

zmienna Zakres

wyrażenia lambda może odnosić się tylko do końcowych lub końcowych zmiennych lokalnych, co oznacza, że ​​nie można zmienić definicję zmiennych eksterytorialnej lambda wewnątrz, w przeciwnym razie błędów kompilacji.

W pliku Java8Tester.java wprowadź następujący kod:

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);
   }
}

Realizacja powyższego scenariusza, wyjście jest:

$ javac Java8Tester.java 
$ java Java8Tester
Hello! w3big

Java 8 nowych funkcji Java 8 nowych funkcji