Lambda表达式是在Java8中引入的,被吹捧为Java 8最大的特性。Lambda表达式简化了函数式编程,并大大简化了开发。
lambda表达式的特征在于以下语法。
parameter -> expression body
使用您选择的任何编辑器(例如,C:\> JAVA)创建以下Java程序。
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)); //without parenthesis GreetingService greetService1=message -> System.out.println("Hello " + message); //with parenthesis GreetingService greetService2=(message) -> System.out.println("Hello " + message); greetService1.sayMessage("Mahesh"); greetService2.sayMessage("Suresh"); } 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编译器编译类,如下所示-
链接:https://www.learnfk.comhttps://www.learnfk.com/java/java8-lambda-expressions.html
来源:LearnFk无涯教程网
C:\JAVA>javac Java8Tester.java
现在运行Java8Tester,如下所示-
C:\JAVA>java Java8Tester
它应该生成以下输出-
10 + 5=15 10 - 5=5 10 x 5=50 10/5=2 Hello Mahesh Hello Suresh
下面是在上面的例子中需要考虑的要点。
Lambda 表达式主要用于定义函数接口的内联实现,即仅具有单个方法的接口。在上面的示例中,无涯教程使用了各种类型的lambda表达式来定义MathOperation接口的操作方法,然后定义了GreetingService的sayMessage的实现。
Lambda表达式消除了匿名类,为Java提供了非常简单但函数强大的函数式编程能力。
使用lambda表达式,您可以引用任何final变量,如果第二次为变量赋值,Lambda表达式将引发编译错误。
使用您选择的任何编辑器创建以下Java程序,例如, C:\> 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("Mahesh"); } interface GreetingService { void sayMessage(String message); } }
使用javac编译器编译类,如下所示-
链接:https://www.learnfk.comhttps://www.learnfk.com/java/java8-lambda-expressions.html
来源:LearnFk无涯教程网
C:\JAVA>javac Java8Tester.java
现在运行Java8Tester,如下所示-
C:\JAVA>java Java8Tester
它应该生成以下输出-
Hello! Mahesh
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)