1、Lambda運算式
? Lambda 運算式是一種匿名函式(對 Java 而言這并不完全正確,但現在姑且這么認為),是JDK1.8新增特性,簡單地說,它是沒有宣告的方法,也即沒有訪問修飾符、回傳值宣告和名字,
? 你可以將其想做一種速記,在你需要使用某個方法的地方寫上它,當某個方法只使用一次,而且定義很簡短,使用這種速記替代之尤其有效,這樣,你就不必在類中費力寫宣告與方法了,
1.1基本方實作類法
首先看一下基礎的實作類,一般定義介面與實作介面的三種方法(一般實作類,靜態內部類,區域內部類),
package SunLambda;
//對介面實作類進行呼叫,
public class Lambda_01 {
//靜態內部類
static class ILike2 implements LambdaSun{
@Override
public void Lambda() {
System.out.println("學習Lambda讓我快樂!2");
}
}
public static void main(String[] args) {
ILike iLike = new ILike();
iLike.Lambda();
ILike2 iLike2 = new ILike2();
iLike2.Lambda();
//區域內部類
class ILike3 implements LambdaSun{
@Override
public void Lambda() {
System.out.println("學習Lambda讓我快樂!3");
}
}
ILike3 iLike3 = new ILike3();
iLike3.Lambda();
}
}
//定義介面
interface LambdaSun{
void Lambda();
}
//定義介面實作類
class ILike implements LambdaSun{
@Override
public void Lambda() {
System.out.println("學習Lambda讓我快樂!");
}
}

為什么要用lambda?
使用lambda運算式可對一個介面進行簡潔的實作,
lambda對介面的要求
要求介面中定義的必須實作的抽象方法只能有一個(必須要實作的,不是default修飾的),
1.2lambda簡化無參構造方法
package SunLambda;
public class Lambda_02 {
public static void main(String[] args) {
//匿名內部類,沒有類的名稱,必須借助介面或者是父親
LambdaSun1 lambda = new LambdaSun1() {
@Override
public void Lambda() {
System.out.println("學習Lambda讓我快樂!5");
}
};
lambda.Lambda();
//用Lambda方法進行簡化
LambdaSun1 lambd = () ->{
System.out.println("學習Lambda讓我快樂!6");
};
lambd.Lambda();
LambdaSun1 lambd1;
//用Lambda方法進行簡化簡化2
lambd1= ()-> System.out.println("學習Lambda讓我快樂!7");
lambd1.Lambda();
}
}
//定義介面
interface LambdaSun1{
void Lambda();
}

Lambda實作介面,是有匿名內部類一步步實作的,
注:
1、Lambda運算式只有一行代碼的情況下才能簡化為一行,多行的話必須使用代碼塊(也就是{});
2、前提是介面是函式式介面;
3、介面多個引數型別可以去掉引數型別,要去掉都去掉,但必須加括號,
1.3Lambda簡化有引數方法
package SunLambda;
public class Lambda_03 {
public static void main(String[] args) {
//匿名內部類
LambdaSun2 lambdasun = new LambdaSun2(){
@Override
public void lambda(int a,int b,int c) {
System.out.println(a+b+c);
}
};
lambdasun.lambda(1,1,1);
LambdaSun2 lambda;
//lambda簡化1
lambda =(int a,int b,int c)->{
System.out.println(a+b+c);
};
lambdasun.lambda(2,2,2);
//lambda簡化2
lambda =( a,b,c)->{
System.out.println(a+b+c);
};
lambdasun.lambda(3,3,3);
//lambda簡化3
lambda=( a,b,c)-> System.out.println(a+b+c);
lambdasun.lambda(4,4,4);
}
}
interface LambdaSun2{
void lambda(int a,int b,int c);
}

注:介面多個引數型別可以去掉引數型別,要去掉都去掉,但必須加括號,
自學習于嗶哩嗶哩狂神說JAVA(侵刪);
作為自己的筆記,歡迎大家斧正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/198603.html
標籤:其他
上一篇:Day34專案saas-export專案-BaseController作父類
下一篇:swagger介面檔案使用
