Lambda表达式
Lambda表达式是函数式编程的核心。Lambda表达式即匿名函数,它是一段没有函数名的函数体,可以作为参数直接传递给相关的调用者。
在第一小节举的例子,一个线程输出"Hello World"字符串:
Runnable r = new Runnable() {
public void run() {
System.out.println("Hello World!");
}
};
new Thread(r).start();
这样的代码看起来冗长。看下用Lambda表达式怎么实现:
new Thread(() -> System.out.println("Hello World")).start();
输出结果:
Lambda表达式语法:
(Type1 param1, Type2 param2, ..., TypeN paramN) -> {
statment1;
statment2;
//.............
return statmentM;
}
1、lambda表达式没有参数,使用空括号()表示没有参数:
() -> { //..... };
2、lambda表达式只有一个参数,可省略参数括号和参数类型,javac能根据上下文推断出参数类型。
param1 -> {
statment1;
statment2;
//.............
return statmentM;
}
3、当lambda表达式只包含一条语句时,可以省略大括号{}。
param1 -> statment
4、参数类型省略–绝大多数情况,编译器都可以从上下文环境中推断出lambda表达式的参数类型。
(param1,param2, ..., paramN) -> {
statment1;
statment2;
//.............
return statmentM;
}
例子,定义Hunman接口:
public interface Hunman {
void say(String str);
}
lambda来使用这个接口:
Hunman h = str -> System.out.println(str);
h.say("Hello World");
输出结果:
实现一个计算2个数的lambda表达式。