目录
学习目标:初步了解Lambda表达式的用法
- 初步接触java中的lambda表达式相关知识与用法
学习内容:
- 函数式接口
- Lambda使用场景
- 不使用Lambda与使用Lambda的实现区别
学习时间:
40分钟
学习产出:
1、函数式接口
函数式接口
定义: 任何接口如果只包含唯一一个抽象方法,那么它就是一个函数式接口
public interface Runnable { public abstract void run(); }
对于这种函数式接口,我们可以通过lambda表达式来创建该接口的对象
2、Lamda使用场景
① 大前提:定义的接口为函数式接口(即只有一个方法);
② lambda 表达式可以理解为是一个匿名的函数,我们可以通过 lambda 表达式来代替功能接口(比方说 Runnable 接口)。lambda 的应用主要在替代功能接口,列表迭代,还有一些对集合的操作上。
3、不使用Lambda与使用Lambda的实现区别
不使用Lambda:
public class LambdaDemo {
public static void main(String[] args) {
// 调用接口实现类
FuncInterfaceImpl funcInterface = new FuncInterfaceImpl();
funcInterface.lambda();
}
}
interface FuncInterface {
void lambda();
}
// 定义接口实现类
class FuncInterfaceImpl implements FuncInterface {
@Override
public void lambda() {
System.out.println("This is a lambda implements...");
}
}
使用Lambda:
public class LambdaDemo {
public static void main(String[] args) {
// 第一种Lambda简化模式(去除参数类型,个人更推荐使用这种,较为清晰,兼容性强)
FuncInterface func1 = (info) -> {
System.out.println("This is Lambda function, parameter is: " + info);
};
// 第二种Lambda简化模式(去除括号)
FuncInterface func2 = info -> {
System.out.println("This is Lambda function, parameter is: " + info);
};
// Lambda最简模式(去除大括号,前提是方法体中只有一行代码)
FuncInterface func3 = info -> System.out.println("This is Lambda function, parameter is: " + info);
func3.lambda("hello world!");
}
}
interface FuncInterface {
void lambda(String info);
}