Latest web development tutorials

Java 8 Lambda-Ausdrücke

Java 8 neue Funktionen Java 8 neue Funktionen


Lambda-Ausdrücke können auch eine Schließung genannt werden, die die wichtigsten neuen Features von Java 8 Release zu fördern ist.

Lambda erlaubt als Parameter einer Methode (Funktion als Parameter in die Methode übergeben) zu funktionieren.

Lambda-Ausdrücke können von der Code wird immer einfacher und kompakter zu machen.

Grammatik

Lambda Ausdruck Syntax lautet wie folgt:

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

Im Folgenden werden wichtige Merkmale der Lambda-Ausdrücke:

  • Optional Typdeklaration: keine Notwendigkeit , Parametertypen zu deklarieren, kann der Compiler einheitliche Identifizierungsparameterwert werden.
  • Die optionalen Parameter in Klammern: ein Parameter ohne Klammern definiert, aber eine Reihe von Parametern definiert , müssen Klammern sein.
  • Optional Klammern: Wenn der Körper eine Anweisung enthält , die Sie nicht Zahnspange benötigen.
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

Lambda-Ausdrücke Beispiele

In Java8Tester.java Datei geben Sie den folgenden Code:

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

Die Umsetzung des obigen Skripts, Ausgabe lautet:

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

Verwenden Sie Lambda-Ausdrücke sind folgende Punkte zu beachten:

  • Lambda-Ausdrücke werden hauptsächlich in der Methodendefinition Linie Schnittstellen auszuführen, beispielsweise eine einfache Art und Weise zu verbinden. In dem obigen Beispiel verwenden wir verschiedene Arten von Lambda-Ausdrücke Methoden zu definieren MathOperation Schnittstelle. Dann definieren wir die Ausführung sayMessage.
  • Lambda-Ausdrücke anonymen Verfahren die Verwendung von umständlichen und da Java-Funktion der einfache, aber leistungsfähige Programmierfunktionen eliminiert.

Variable Scope

Lambda-Ausdrücke können nur bis zur endgültigen oder abschließenden lokalen Variablen beziehen, was bedeutet, dass Sie nicht die Definition von exterritorialen Variablen Lambda innen ändern können, sonst Kompilierungsfehlern.

In Java8Tester.java Datei geben Sie den folgenden Code:

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

Die Umsetzung des obigen Skripts, Ausgabe lautet:

$ javac Java8Tester.java 
$ java Java8Tester
Hello! w3big

Java 8 neue Funktionen Java 8 neue Funktionen