Lambda表达式


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语言表达能力得到了提升


Author: havenochoice
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source havenochoice !
评论
  TOC