lambda表達式的使用
什么是lambda表達式
lambda表達式本質(zhì)是創(chuàng)建函數(shù)式接口的對象(函數(shù)式接口,只包含一個未實現(xiàn)方法的接口蚂会,default聲明的方法不算)
格式 (t1,t2) ->{Integer.compare(t1,t2)};
-> //lambda操作符
-> 操作符左邊 (t1,t2) lambda的形參列表
-> 操作符右邊 {Integer.compare(t1,t2)} lambda的方法體淋样,實際上就是接口抽象方法實現(xiàn)的方法體
演變實例
1、首先有個函數(shù)式接口
public interface OneParamInterface {
void print(Long name);
}
2胁住、然后創(chuàng)建一個測試類
package com.example.openfiegndemo.controller.lamda;
public class LamdaTestClass {
public static void main(String[] args) {
//普通實現(xiàn)
OneParamInterface oneParamInterface=new OneParamInterface() {
@Override
public void print(String name) {
System.out.println("我是"+name+"啦啦啦啦");
}
};
}
輸出如下
image.png
改造成lambda表達式
package com.example.openfiegndemo.controller.lamda;
public class LamdaTestClass {
public static void main(String[] args) {
//普通實現(xiàn)
// OneParamInterface oneParamInterface=new OneParamInterface() {
// @Override
// public void print(String name) {
// System.out.println("我是"+name+"啦啦啦啦");
// }
// };
// oneParamInterface.print("普通函數(shù)");
//lambda表達式
OneParamInterface oneParamInterface1=(name)->System.out.println("我是"+name+"啦啦啦啦");
oneParamInterface1.print("lambda表達式");
}
}
變形過程如圖
image.png
運行結果
image.png
小提示
左邊參數(shù)列表只有一個的話趁猴,()小括號可以省略直接
右邊方法體的行數(shù)只有一個的話, {}大括號可以省略
======================補充============
如果接口中聲明了方法是重寫object的方法的話彪见,也不算是一個抽象方法
image.png
例如:Comparator接口是函數(shù)式接口
image.png