Lambda 表达式(本质上,就是简化语句书写)
Lambda 表达式,是 JDK 8 引入的新特性,使用更加简洁的代码可以且只可以创建函数式接口实例。
目录
- 1. 语法规则
- 1.1 使用对象
- 1.2 使用规则
- 2. 方法引用与构造器引用
- 2.1 引用类方法
- 2.2 引用特定对象的实例方法
- 2.3 引用某类对象的实例方法
- 2.4 引用构造器
正文
1. 语法规则
1.1 使用对象
Lambda 表达式只能用于只有一个抽象方法的接口(函数式接口)。
1.2 使用规则
Lambda 表达式由 形参列表、箭头、代码块 组成。
- 形参列表:允许省略形参类型;若是只有一个形参,则可以省略 ();
- 箭头:必须写成 ->
- 代码块:若是只有一条语句,则可以省略花括号;若是,只有一条 return 语句,则可以省略 return;
2. 方法引用与构造器引用

2.1 引用类方法
//1. 定义函数式接口
@FunctionalInterface
interface Converter {
int convert(String from);
}
//1.1 使用常规 Lambda 表达式实现
Converter converter = from -> Integer.valueOf(from);
//1.2 引用类方法
Converter converter = Integer::valueOf;
2.2 引用特定对象的实例方法
//1. 定义函数式接口
@FunctionalInterface
interface Converter {
int indexOf(String from);
}
//1.1 使用常规 Lambda 表达式实现
Converter converter = from -> "HelloWorld".indexOf(from);
//1.2 引用特定对象的方法,如 String:"HelloWorld"
Converter converter = "HelloWorld"::indexOf;
2.3 引用某类对象的实例方法
//1. 定义函数式接口
@FunctionalInterface
interface Converter {
String substring(String a, int b, int c);
}
//1.1 使用常规 Lambda 表达式实现
Converter converter = (a, b, c) -> a.substring(b, c);
//1.2 引用某类对象的实例方法
Converter converter = String::substring;
2.4 引用构造器
//1. 定义函数式接口
@FunctionalInterface
interface JFrameFactory {
JFrame getJFrame(String title);
}
//1.1 使用常规 Lambda 表达式实现
Converter converter = (title) -> new JFrame(title);
//1.2 引用某类对象的实例方法
Converter converter = JFrame::new;
转载于:https://www.cnblogs.com/mr-white/p/7192964.html