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