Lambda表示式的學習
Lambda
函式式介面:
-
任何介面,如果只包含唯一一個抽象方法,他就是一個函式式介面。
-
函式式介面可以通過Lambda表示式來建立該介面的物件。
關於Lambda表示式,解決的就是函式式介面的需要採用大量複雜的程式碼,尤其見於執行緒的使用
首先是採用外部類:
public class Lambda {
public static void main(String[] args) {
//要實現介面首先要例項化一個外部類,然後實現
LeiAi leiAi = new LeiAi();
leiAi.like("蘋果");
}
}
//定義一個外部類實現ILike介面
class LeiAi implements ILike{
結果:
![image-20211117195132848](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195132848.png)
接著使用靜態內部類:
ublic class Lambda {
static class LeiAI implements ILike{
結果:
![image-20211117195216136](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195216136.png)
區域性內部類:
public class Lambda {
public static void main(String[] args) {
//建立區域性內部類實現
class LeiAI implements ILike{
結果
![image-20211117195540519](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195540519.png)
匿名內部類
public class Lambda {
public static void main(String[] args) {
new ILike() {
結果:
![image-20211117195926630](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195926630.png)
lambda
public class Lambda {
public static void main(String[] args) {
ILike iLike = (String food)->{
System.out.println("我喜歡吃--->"+ food);
};
iLike.like("西瓜");
}
}
interface ILike{
void like(String food);
}
結果:
![image-20211117200551628](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117200551628.png)
更加簡化的Lambda
public class Lambda {
public static void main(String[] args) {
ILike iLike = food-> System.out.println("我喜歡吃--->"+ food);
iLike.like("榴蓮");
}
}
interface ILike{
void like(String food);
}
其中引數的型別可以全部去掉,但是必須加上括號,只有一句語句才可以去除語法塊中的{}
Lambda在Android中的使用十分廣泛,所以還有一系列內部類的使用也都比較晦澀難懂,一步一個腳印。