Lambda表达式是一个匿名函数,Java引入她是想鉴函数编程思想融合声明式编程特性.Lambda可谓是java8最激动人心的新特性之一了,先从实例看起:
Lambda表达式的语法形式为:[color=red](formal parameter list) ->{ expression or statements }[/color],前面是参数列表,后面是方法体。参数的类型可以显式写出,如果没有写出,将从接口推断。后面的大括号在返回结果是void且只有单一的表达式或声明时可以省略。
@Test
public void testInnerClass() {
//传统的写法
Runnable run = new Runnable() {
@Override
public void run() {
System.out.println("内部类");
}
};
//无返回值且只有单一的表达式或声明时大括号可省略
run = () -> System.out.print("Lambda1");
//方法体内有多个表达式或声明,大括号不可省略
run = () -> {
int i = 0;
System.out.print("Lambda2");
};
//有返回值,大括号不可省略
Callable<Integer> call = () -> {
return 0;
};
//参数类型没有显式写出,将从接口推断
Comparator<Integer> comp = (i1, i2) -> {
return i1.compareTo(i2);
};
//显式写出参数类型
comp = (Integer i1, Integer i2) -> {
return i1.compareTo(i2);
};
}
Lambda表达式的语法形式为:[color=red](formal parameter list) ->{ expression or statements }[/color],前面是参数列表,后面是方法体。参数的类型可以显式写出,如果没有写出,将从接口推断。后面的大括号在返回结果是void且只有单一的表达式或声明时可以省略。