lambda表达式是Java 8中所引入的一大亮点,它可以使得代码的简洁性和可读性都有所提高。
lambda表达式的标准格式为:
( 参数列表) - > {
}
示例:
public interface Calculable {
int calculateInt ( int a, int b) ;
}
public class Text {
public static void main ( String[ ] args) {
int a = 5 ;
int b = 3 ;
Calculable c1 = calculable ( '+' ) ;
Calculable c2 = calculable ( '-' ) ;
System. out. println ( c1. calculateInt ( a, b) ) ;
System. out. println ( c2. calculateInt ( a, b) ) ;
}
public static Calculable calculable ( char s) {
Calculable res = null;
if ( s == '+' ) {
res = ( int a, int b) - > {
return a + b;
} ;
} else if ( s == '-' ) {
res = ( int a, int b) - > {
return a - b;
} ;
}
return res;
}
}
lambda表达式是一个函数式的接口,这种接口只能有一个方法,如果有多个方法则会发生编译错误:
The target type of this expression must be a functional interface
为了防止在接口中定义多个抽象方法,Java提供了一个声明函数式接口的注解:
@FunctionalInterface
public interface Calculable {
int calculateInt ( int a, int b) ;
}
在一些特殊的情况下,lambda表达式可以进行简化:
参数类型可以省略,但必须所有的参数类型都省略;
当参数列表只有一个时,参数列表的小括号可以省略;
当lambda方法体只有一条语句时,方法体大括号可以省略;
当lambda方法体只有一条语句,且这条语句是return语句时,return可同大括号一起省略。