Lambda表达式
主要用于简化匿名内部类的表示(Java8之后)
使用条件
- 只能适用于接口的匿名化实现,不能用于抽象类
- 接口中有且只有一个待实现的抽象方法(此时接口为函数式接口,接口上可以写
@FunctionalInterface注解)
书写规范
标准格式为:
( 参数类型 参数名 ) -> {
方法体
}
参数类型可省略不写
例如,有一个Study接口,只含有study抽象方法:
public interface Study{
void study();
}
public static void main(String[] args){
Study study = () -> sout("study抽象方法的实现"); //Lambda表达式
study.study(); //调用study方法
如果抽象方法有形参,就在括号里面写上对应的数据类型和参数名就行了
特殊情况
只有一个形参
可以不写参数类型和小括号
只有一个返回值
可以不用写大括号、分号和return(需要同时省略)
直接在 ->后面写return的语句就行:
public interface Study{
String study(int a);
}
public static void main(String[] args){
Study study = a -> "返回值为:"+a;
study.study();
}
使用
方法的参数是接口的实现
interface Study(){
void study();
}
public static void test(Study s){ //此时test方法的参数是Study接口
s.study();
}
public static void main(String[] args){
test( () -> sout("Study接口实现") );
好处
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、灵活的代码,作为一中更紧凑的代码风格,使Java语言表达能力得到了提升