Lambda運算式(狂神學習筆記)
Lambda 運算式,也可稱為閉包,它是推動 Java 8 發布的最重要新特性,
Lambda 允許把函式作為一個方法的引數(函式作為引數傳遞進方法中),
使用 Lambda 運算式可以使代碼變的更加簡潔緊湊,
函式式介面定義
- 任何介面只包含唯一一個抽象方法,那么它就是一個函式式介面
- 對于任何函式式介面,我們可以通過lamda運算式來創建該介面的物件
示例:
public interface Runnable{
public abstract void run();
}
Lambda運算式(示例)
package 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簡化5,因為只有一個抽象方法,可以讓他自己推匯出來
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 lambda;
//簡化lambda運算式
public class TestLambda2 {
public static void main(String[] args) {
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);
//總結:
//lambda運算式只能有一行代碼的情況下才能簡化成為一行,如果有多行,那么就用代碼塊(花括號)包裹,
//前提是介面為函式式介面(只能有一個方法),
//多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號,
love.love(2);
}
}
interface ILove{
void love(int a);
}
總結:
- lambda運算式只能有一行代碼的情況下才能簡化成為一行,如果有多行,那么就用代碼塊(花括號)包裹,
- 前提是介面為函式式介面(只能有一個方法),
- 多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252665.html
標籤:java
上一篇:24. 兩兩交換鏈表中的節點
