Lambda表达式,也可称为闭包,是java8最重要的新特性。
简单说,Lambda表达式牛逼在于可以把一个函数当作参数放进方法中。
先看Lambda表达式的语法
(parameters)-> expression;
或者(parameters)->{ statments;}
Lambda表达式有四大特性:
1.可选参数类型:参数类型可以不用写,自动识别。
2.可选括号:参数列表可以不用括号包围,当然,这需要只有一个参数。
3.可选花括号:如果方法体只有一条语句,可以不写花括号。
4.可选return:如果方法体只有一条能够返回值的表达式,则会自动返回。
下面来看例子:
package com.wenjun.test;
/**
* 数学运算
*/
interface MathOperation{
/**
* @param a
* @param b
* @return
*/
int operation(int a,int b);
}
/**
* 打招呼
*/
interface Greeting{
void say(String info);
}
/**
* @author xuwenjun
* @date 2019/8/9
*/
public class Lambda {
public static int operator(int a,int b,MathOperation mathOperation){
return mathOperation.operation(a, b);
}
public static void main(String[] args) {
MathOperation add = (int a,int b)->a+b;
MathOperation sub = (a,b)->a-b;
MathOperation mul = (a,b)->{return a*b;};
MathOperation div = (int a,int b)->{return a/b;};
Greeting helloWorld = info-> System.out.println(info);
System.out.println("1+1="+operator(1,1,add));
System.out.println("3-1="+operator(3,1,sub));
System.out.println("2*2="+operator(2,2,mul));
System.out.println("6\3="+operator(6,3,div));
helloWorld.say("hello world!");
}
}
注意:
1.Lambda可以引用外面的变量,但是这个变量必须是final才行,也就是不允许再Lambda表达式内修改变量名。
2.Lambda表达式的参数列表不能出现跟局部变量名字一样的变量,会报错……
这次就写到这里,下次继续
如果有错误,烦请指出,谢谢!
本文深入探讨了Java 8中的Lambda表达式,一种重要的新特性,它允许将函数作为参数传递。文章通过实例展示了Lambda表达式的语法和四大特性,并提供了数学运算和打招呼接口的具体实现。
2251

被折叠的 条评论
为什么被折叠?



