Java8 Lamda方法引用和構(gòu)造引用原理
一方法引用概述
方法引用是特定Lamda表達(dá)式的一種簡寫,其思路就是能替換Lamda表達(dá)式就直接調(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ū)ο髮?shí)例的方法的引用
語法格式:實(shí)例名稱(instanceName)::方法名稱(MethodName)
這個對象指的是非入?yún)⒌耐獠繉ο?br />
示例:
// 2 Lamda表達(dá)式
@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表達(dá)式
@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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
servlet之session工作原理簡介_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了servlet之session工作原理簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
mybatisplus的連表增強(qiáng)插件mybatis plus join
本文主要介紹了mybatisplus的連表增強(qiáng)插件mybatis plus join,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Java?HashMap中除了死循環(huán)之外的那些問題
這篇文章主要介紹了Java?HashMap中除了死循環(huán)之外的那些問題,這些問題大致可以分為兩類,程序問題和業(yè)務(wù)問題,下面文章我們一個一個來看,需要的小伙伴可以參考一下2022-05-05
java向上轉(zhuǎn)型發(fā)生的時機(jī)知識點(diǎn)詳解
在本篇文章里小編給大家整理分享的是關(guān)于java向上轉(zhuǎn)型發(fā)生的時機(jī)知識點(diǎn)內(nèi)容,有興趣的讀者們可以參考下。2021-05-05
springboot+vue項(xiàng)目從第一行代碼到上線部署全流程
本文詳細(xì)介紹了如何從零開始搭建一個基于Spring Boot和Vue.js的前后端分離項(xiàng)目,并涵蓋項(xiàng)目需求分析、技術(shù)選型、項(xiàng)目結(jié)構(gòu)設(shè)計(jì)、前后端交互、部署上線等全過程,感興趣的朋友跟隨小編一起看看吧2024-11-11
Java List集合去重的多種實(shí)現(xiàn)方法
Java中List集合去重的多種方法,包括使用循環(huán)、HashSet、保持順序去重、contain方法去重等,注意在刪除元素時,直接操作會導(dǎo)致ConcurrentModificationException,應(yīng)使用傳統(tǒng)for循環(huán)或倒序刪除2025-02-02

