Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发.
lambda表达式的特征在于以下语法.
parameter -> expression body
以下是lambda表达式的重要特征.
可选类型声明 : 无需声明参数的类型.编译器可以从参数的值推断出相同的值.
参数 : 的可选括号;无需在括号中声明单个参数.对于多个参数,需要括号.
可选花括号 : 如果正文包含单个语句,则无需在表达式主体中使用花括号.
可选返回关键字 : 如果正文具有单个表达式以返回值,则编译器会自动返回该值.需要使用大括号来表示表达式返回一个值.
创建以下Java程序使用您选择的任何编辑器,例如C:\> JAVA.
public class Java8Tester { public static void main(String args []){ Java8Tester tester = new Java8Tester(); //带类型声明 MathOperation addition =(int a,int b) - > a + b; //没有类型声明 MathOperation减法=(a,b) - > a - b; //带有返回语句和大括号 MathOperation multiplication =(int a,int b) - > {return a * b; }; //没有return语句且没有花括号 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,减法)); System.out.println("10 x 5 ="+ tester.operate(10,5,乘法)); System.out.println("10/5 ="+ tester.operate(10,5,division)); //无括号 GreetingService greetService1 = message - > System.out.println("你好"+消息); //带括号 GreetingService greetService2 =(message) - > System.out.println("你好"+消息); greetService1.sayMessage("Mahesh"); greetService2.sayMessage("Suresh"); } 接口MathOperation { int operation(int a,int b); } interface GreetingService { void sayMessage(String message); } private int操作(int a,int b,MathOperation mathOperation){ return mathOperation.operation(a,b); } }
使用 javac编译班级编译如下 :
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表达式,可以引用任何最终变量或有效的最终变量(仅分配一次).如果第二次为变量赋值,则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编译班级编译如下 :
C:\JAVA>javac Java8Tester.java
现在运行Java8Tester如下 :
C:\JAVA>java Java8Tester
它应该产生以下输出 :
Hello! Mahesh