大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java8中的雙冒號(hào)運(yùn)算符

Java8中的雙冒號(hào)運(yùn)算符

更新時(shí)間:2022-12-06 11:09:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1906次

1. 概述

在這篇文章中,我們將討論雙冒號(hào)運(yùn)算符(::)在Java 8和場(chǎng)景的操作員可以使用。

2. 從λ雙冒號(hào)運(yùn)算符

Lambdas表達(dá)式,我們看到,代碼可以變得非常簡(jiǎn)潔。

例如,要?jiǎng)?chuàng)建一個(gè)比較器,以下語(yǔ)法就足夠了:

Comparator c = (Computer c1, Computer c2) -> c1.getAge().compareTo(c2.getAge());

然后,類(lèi)型推斷:

Comparator c = (c1, c2) -> c1.getAge().compareTo(c2.getAge());

但我們能讓上面的代碼更加富有表現(xiàn)力和可讀嗎?讓我們看一看:

Comparator c = Comparator.comparing(Computer::getAge);

我們使用:運(yùn)營(yíng)商作為λ速記調(diào)用一個(gè)特定的方法——的名字。最后,結(jié)果當(dāng)然是更可讀語(yǔ)法。

3.它是如何工作的呢?

非常簡(jiǎn)單地說(shuō),當(dāng)我們使用一個(gè)方法參考——目標(biāo)參考前放置分隔符::方法的名稱(chēng)后提供。

例如:

Computer::getAge;

我們正在尋找一個(gè)方法參考方法getAge計(jì)算機(jī)類(lèi)中定義。

我們可以操作的函數(shù):

Function<Computer, Integer> getAge = Computer::getAge;
Integer computerAge = getAge.apply(c1);

請(qǐng)注意,我們引用函數(shù),然后將它應(yīng)用到合適的參數(shù)。

4. 方法引用

我們可以好好利用這個(gè)運(yùn)營(yíng)商相當(dāng)一段場(chǎng)景。

(1)靜態(tài)方法

首先,我們將使用一個(gè)靜態(tài)的實(shí)用方法:

List inventory = Arrays.asList(
  new Computer( 2015, "white", 35), new Computer(2009, "black", 65));
inventory.forEach(ComputerUtils::repair);

(2)現(xiàn)有對(duì)象的一個(gè)實(shí)例方法

接下來(lái),讓我們看一看一個(gè)有趣的場(chǎng)景——現(xiàn)有對(duì)象實(shí)例的引用一個(gè)方法。

Computer c1 = new Computer(2015, "white");
Computer c2 = new Computer(2009, "black");
Computer c3 = new Computer(2014, "black");
Arrays.asList(c1, c2, c3).forEach(System.out::print);

(3)一個(gè)實(shí)例方法的任意一個(gè)特定類(lèi)型的對(duì)象

Computer c1 = new Computer(2015, "white", 100);
Computer c2 = new MacbookPro(2009, "black", 100);
List inventory = Arrays.asList(c1, c2);
inventory.forEach(Computer::turnOnPc);

如你所見(jiàn),我們引用turnOnPc方法而不是一個(gè)具體的實(shí)例,但是在類(lèi)型本身。

在4號(hào)線(xiàn)實(shí)例方法turnOnPc將呼吁每個(gè)對(duì)象的庫(kù)存。

這自然意味著c1 - turnOnPc方法將被稱(chēng)為計(jì)算機(jī)實(shí)例和c2 MacbookPro實(shí)例上。

(4)一個(gè)超級(jí)某個(gè)特定對(duì)象的方法

假設(shè)你有以下方法在計(jì)算機(jī)超類(lèi):

public Double calculateValue(Double initialValue) {
    return initialValue/1.50;
}

這一個(gè)在MacbookPro子類(lèi):

@Override
public Double calculateValue(Double initialValue){
    Function<Double, Double> function = super::calculateValue;
    Double pcValue = function.apply(initialValue);
    return pcValue + (initialValue/10) ;
}

調(diào)用calculateValue方法MacbookPro實(shí)例:

macbookPro.calculateValue(999.99);

也會(huì)產(chǎn)生也在電腦上調(diào)用calculateValue超類(lèi)。

5. 構(gòu)造函數(shù)引用

(1)創(chuàng)建一個(gè)新的實(shí)例

引用一個(gè)構(gòu)造函數(shù)實(shí)例化一個(gè)對(duì)象可以很簡(jiǎn)單:

@FunctionalInterface
public interface InterfaceComputer {
    Computer create();
}
InterfaceComputer c = Computer::new;
Computer computer = c.create();

如果你在一個(gè)構(gòu)造函數(shù)有兩個(gè)參數(shù)嗎?

BiFunction<Integer, String, Computer> c4Function = Computer::new; 
Computer c4 = c4Function.apply(2013, "white");

如果參數(shù)是三個(gè)或更多,你必須定義一個(gè)新功能界面:

@FunctionalInterface 
interface TriFunction<A, B, C, R> { 
    R apply(A a, B b, C c); 
    default <V> TriFunction<A, B, C, V> andThen( Function<? super R, ? extends V> after) { 
        Objects.requireNonNull(after); 
        return (A a, B b, C c) -> after.apply(apply(a, b, c)); 
    } 
}

然后,初始化您的對(duì)象:

TriFunction <Integer, String, Integer, Computer> c6Function = Computer::new;
Computer c3 = c6Function.apply(2008, "black", 90);

(2)創(chuàng)建一個(gè)數(shù)組

最后,讓我們看看如何創(chuàng)建計(jì)算機(jī)對(duì)象數(shù)組和五個(gè)要素:

Function <Integer, Computer[]> computerCreator = Computer[]::new;
Computer[] computerArray = computerCreator.apply(5);

以上就是關(guān)于“Java8中的雙冒號(hào)運(yùn)算符”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下本站的Java教程,里面還有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-10-10 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 伊人久久成人爱综合网 | 狠狠干综合 | 在线观看国产一区 | 日日干天天爽 | 欧美日韩一卡二卡 | 久久久久欧美国产精品 | 在线观看av片永久免费 | 香蕉视频免费在线播放 | 国产精品每日更新在线观看 | 两性色午夜视频免费老司机 | 亚洲欧美精品在线 | 亚洲另类图片专区 | 国产一级特黄aaaa大片野外 | 国产成人亚洲精品久久 | www.久久久| 欧美一区二区三区视频在线 | 色视频网站人成免费 | 日日爱影院| 国产成人精品曰本亚洲 | 久久伊人精品 | 在线视频免费国产成人 | 国产成年人网站 | 久久综合日韩亚洲精品色 | 性www| 国产一级毛片国语普通话对白 | 国语精品91自产拍在线观看二区 | 国产精品素人福利 | 中文字幕在线播 | 国内精品久久久久久久星辰影视 | 日本一区毛片免费观看 | 日本欧美一区二区三区乱码 | 日本三级做a全过程在线观看 | 欧美成人猛男性色生活 | jizzjizzjizz孕妇| 欧美视频一区二区三区 | 久久久久亚洲精品影视 | 久久99久久99 | 亚洲一级免费毛片 | 亚洲视频一区二区三区四区 | 久久免费资源福利资源站 | 亚洲香蕉一区二区三区在线观看 |