Java8 Lamda方法引用和構造引用原理
一方法引用概述
方法引用是特定Lamda表達式的一種簡寫,其思路就是能替換Lamda表達式就直接調用函數(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 指向對象實例的方法的引用
語法格式:實例名稱(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 指向實例的方法引用
語法格式:對象名稱(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
}
三構造器引用
語法格式:對象名稱(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);
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
servlet之session工作原理簡介_動力節(jié)點Java學院整理
這篇文章主要介紹了servlet之session工作原理簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
mybatisplus的連表增強插件mybatis plus join
本文主要介紹了mybatisplus的連表增強插件mybatis plus join,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-06-06
Java?HashMap中除了死循環(huán)之外的那些問題
這篇文章主要介紹了Java?HashMap中除了死循環(huán)之外的那些問題,這些問題大致可以分為兩類,程序問題和業(yè)務問題,下面文章我們一個一個來看,需要的小伙伴可以參考一下2022-05-05
springboot+vue項目從第一行代碼到上線部署全流程
本文詳細介紹了如何從零開始搭建一個基于Spring Boot和Vue.js的前后端分離項目,并涵蓋項目需求分析、技術選型、項目結構設計、前后端交互、部署上線等全過程,感興趣的朋友跟隨小編一起看看吧2024-11-11

