Java8 Lamda方法引用和構(gòu)造引用原理
一方法引用概述
方法引用是特定Lamda表達式的一種簡寫,其思路就是能替換Lamda表達式就直接調(diào)用函數(shù)使用方法名。
其語法格式:類名 :: 方法名。
二3種方法引用
1 指向靜態(tài)方法的引用
語法格式: 靜態(tài)類名(ClassName)::方法名(MethodName)
示例:
// 1 Lamda靜態(tài)方法
@Test
public void LamdaSTest(){
String youku1327 = "1327";
Function function = s -> ObjectUtils.allNotNull(youku1327);
System.out.println(function.apply(youku1327));// true
}
// 靜態(tài)方法引用
@Test
public void MethodRefTest(){
String youku1327 = "youku1327";
Function function = ObjectUtils::allNotNull;
System.out.println(function.apply(youku1327));// true
}
2 指向?qū)ο髮嵗姆椒ǖ囊?/strong>
語法格式:實例名稱(instanceName)::方法名稱(MethodName)
這個對象指的是非入?yún)⒌耐獠繉ο?br />
示例:
// 2 Lamda表達式
@Test
public void ObjectLamdaTest(){
Car car = new Car("100", "black", "中國", 20);
Supplier supplier = ()-> car.getColor();
System.out.println(supplier.get());//black
}
// 對象引用
@Test
public void ObjectRefTest(){
Car car = new Car("100", "black", "中國", 20);
Supplier<String> supplier = car::getColor;
System.out.println(supplier.get());//black
}
3 指向?qū)嵗姆椒ㄒ?br />
語法格式:對象名稱(ClassName)::方法名稱(Method)
這個對象指的是入?yún)ο?/p>
//3 Lamda表達式
@Test
public void InstanceMethodLamdaTest(){
Car car = new Car("100", "black", "中國", 20);
Function<Car,String> function = s -> s.getColor();
System.out.println(function.apply(car));//black
}
@Test
public void InstanceMethodRefTest(){
Car car = new Car("100", "black", "中國", 20);
Function<Car,String> function = Car::getColor;
System.out.println(function.apply(car));//black
}
三構(gòu)造器引用
語法格式:對象名稱(ClassName)::new
@Test
public void constructLamdaTest(){
BiFunction<String,Double,Car> biFunction = (s, aDouble) -> new Car(s,aDouble);
Car car = biFunction.apply("youku1327", 50.0);
// Car(code=youku1327, color=null, factory=null, price=50.0)
System.out.println(car);
}
@Test
public void construcMethodRefTest(){
BiFunction<String,Double,Car> biFunction = Car::new;
Car car = biFunction.apply("youku1327", 50.0);
// Car(code=youku1327, color=null, factory=null, price=50.0)
System.out.println(car);
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot @WebFilter注解過濾器的實現(xiàn)
這篇文章主要介紹了springboot @WebFilter注解過濾器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
Java BigDecimal解決double精度丟失的問題
我們在日常開發(fā)中, 有很多時候會遇到小數(shù)(double類型)精確計算,本文主要介紹了Java BigDecimal解決double精度丟失的問題,具有一定的參考價值,感興趣的可以了解一下2023-11-11
總結(jié)一下關(guān)于在Java8中使用stream流踩過的一些坑
java8新增了stream流式處理,對于list的各種操作處理提供了好多方法 ,用過的都知道,方便極了.比如篩選、排序、合并、類型轉(zhuǎn)換等等.以下是我實際工作中踩過的坑,記錄下避免大家踩坑,需要的朋友可以參考下2021-06-06

