Latest web development tutorials

expressions Java 8 Lambda

Java 8 nouvelles fonctionnalités Java 8 nouvelles fonctionnalités


Les expressions lambda peuvent également être appelés une fermeture, qui est de promouvoir les plus importantes nouvelles fonctionnalités de Java 8 libération.

Lambda autorisée à fonctionner en tant que paramètre d'une méthode (fonction passée en paramètre dans la méthode).

Les expressions lambda peuvent utiliser le code devient plus simple et compact.

grammaire

syntaxe de l'expression lambda est la suivante:

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

Voici les caractéristiques importantes des expressions lambda:

  • Facultatif déclaration de type: pas besoin de déclarer les types de paramètres, le compilateur peut être unifiée valeur du paramètre d'identification.
  • Les paramètres optionnels entre parenthèses: un paramètre défini sans parenthèses, mais un certain nombre de paramètres doivent être définis entre parenthèses.
  • accolades en option:si le corps contient une déclaration que vous n'avez pas besoin accolades.
  • Facultatif mots - clés de retour:Si le sujet est seulement une expression qui renvoie une valeur, le compilateur retourne automatiquement la valeur, les accolades doivent préciser l' expression claire qui renvoie une valeur.

Lambda Expressions Exemples

Dans le fichier Java8Tester.java entrez le code suivant:

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

Mise en œuvre du script ci-dessus, la sortie est:

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

Utilisez des expressions lambda de noter les points suivants:

  • Les expressions lambda sont principalement utilisés dans les interfaces méthode de ligne de définition pour effectuer, par exemple, d'une manière simple à l'interface. Dans l'exemple ci-dessus, nous utilisons différents types d'expressions lambda pour définir les méthodes MathOperation interface. Ensuite, nous définissons l'exécution sayMessage.
  • Lambda expressions méthode anonyme élimine l'utilisation de la fonction Java lourd et compte tenu des capacités de programmation simples mais puissants.

Portée variable

expressions lambda ne peuvent se référer à des variables locales finales ou finales, ce qui signifie que vous ne pouvez pas modifier la définition des variables extraterritoriale lambda à l'intérieur, sinon des erreurs de compilation.

Dans le fichier Java8Tester.java entrez le code suivant:

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

Mise en œuvre du script ci-dessus, la sortie est:

$ javac Java8Tester.java 
$ java Java8Tester
Hello! w3big

Java 8 nouvelles fonctionnalités Java 8 nouvelles fonctionnalités