Docker下載映象巨慢
阿新 • • 發佈:2021-01-27
技術標籤:Java
什麼是函式式介面 ?
任何介面,如果只包含唯一一個抽象方法,那麼它就是一個函式式介面。
對於函式式介面,我們可以通過 Lambda 表示式來建立該介面的物件。
推導Lambda表示式
首先宣告一個函式式介面
- 普通的介面實現類
- 靜態內部類
- 區域性內部類
- 匿名內部類
- Lambda表示式
package com.zhang.lambda;
/*
#### 推導 Lambda 表示式
*/
public class TestLambda1 {
//3.靜態內部類
static class Like2 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda2...");
}
}
public static void main(String[] args) {
ILike like = new Like();
like.lambda();
like = new Like2();
like.lambda();
//4.區域性內部類
class Like3 implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda3...");
}
}
like = new Like3();
like.lambda();
//5.匿名內部類,沒有類的名稱,必須藉助介面或者父類
like = new ILike() {
@Override
public void lambda() {
System.out.println("I like lambda4...");
}
};
like.lambda();
//6.用 lambda 簡化, 由於只有一個介面,且其中只有一個方法,只需保留方法體即可
like = () -> {
System.out.println("I like lambda5...");
};
like.lambda();
}
}
//1.定義一個函式式介面
interface ILike {
void lambda();
}
//2.實現類
class Like implements ILike {
@Override
public void lambda() {
System.out.println("I like lambda...");
}
}
Lambda 表示式的簡化
- 去掉引數型別
- 簡化括號
- 去掉 {}
package com.zhang.lambda;
public class TestLambda2 {
public static void main(String[] args) {
// lambda表示簡化
ILove love = (int a) -> {
System.out.println("I love you -> " + a);
};
//簡化1:引數型別
love = (a) -> {
System.out.println("I love you ->" + a);
};
//簡化2:簡化括號
love = a -> {
System.out.println("I love you ->" + a);
};
//簡化3:去掉 {}
love = a -> System.out.println("I love you ->" + a);
love.love(520);
}
}
interface ILove {
void love(int a);
}
/*
總結:
1.lambda表示式只能有一行程式碼的情況下才能簡化成為一行,如果有多行,那麼就用程式碼塊包裹。
2.前提是介面為函式式介面(接口裡面只有一個方法)
3.多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號
*/
筆記來源 : https://www.bilibili.com/video/BV1V4411p7EF