国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java8學習教程之函數引用的使用方法

java8學習教程之函數引用的使用方法

2021-01-05 10:58tantanit Java教程

這篇文章主要給大家介紹了關于java8學習教程之函數引用的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習下吧。

前言

我們在上一篇文章 中以實例講解如何定義和使用 lambda 表達式,以及與其它語言相比,lambda 表達式在 Java 中的特殊規范。并且提到,lambda 表達式可以進一步簡化為函數引用。

這篇文章將介紹如何使用函數引用,話不多說了,來一起看看詳細的介紹吧。

函數引用的類型

函數引用分為以下四種:

  • 靜態函數,比如 Integer 類的 parseInt 函數,可以寫作 Integer::parseInt
  • 對象級別函數的引用,比如 String 類的 length 函數,可以寫作 String::length
  • 具體實例的函數的引用,比如名稱為 expensiveTransaction 的一個實例的 getValue,寫作 expensiveTransaction::getValue
  • 構造函數的引用

靜態函數

比如:

?
1
Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);

可以寫作:

?
1
Function<String, Integer> stringToInteger = Integer::parseInt;

對象級別函數的引用

?
1
2
BiPredicate<List<String>, String> contains =
(list, element) -> list.contains(element);

可以寫作:

?
1
BiPredicate<List<String>, String> contains = List::contains;

構造函數的引用

下面再舉一個構造函數的例子, 首先定義一個函數式接口,唯一的方法 get 返回指定類型的對象。

?
1
2
3
4
@FunctionalInterface
public interface Supplier<T> {
 T get();
}
?
1
2
Supplier<TantanitReader> constructor = () -> new TantanitReader();
TantanitReader tantanitReader = constructor.get();

上述代碼的 lambda 表達式 new 并返回一個新的對象,使得 constructor 變量成為一個構造器的引用。

等價于以下函數引用:

?
1
2
Supplier<TantanitReader> constructor2 = TantanitReader::new;
TantanitReader tantanitReader2 = constructor2.get();

以上的例子都是沒有參數的情況,下面仍然以構造函數為例,介紹有參數的情況:

?
1
2
3
public TantanitReader(String loginName) {
 this.loginName = loginName;
}
?
1
2
3
4
5
6
Function<String,TantanitReader> constructor3 = (loginName) -> new TantanitReader(loginName);
TantanitReader tantanitReader3 = constructor3.apply("jack");
 
Function<String,TantanitReader> constructor4 = TantanitReader::new;
TantanitReader tantanitReader4 = constructor4.apply("jack");
TantanitReader tantanitReader5 = constructor4.apply("tom");

這時由于函數只有一個參數,可以使用 Java 自帶的 Function這個函數式接口,它實際起作用的函數如下:

?
1
R apply(T t);

作用為根據一個參數,返回一個結果。我們由此可以使用 constructor4 以及相應的函數引用 constructor5。

小結

使用函數引用不僅可以簡化 lambda 表達式,而且在語義上可以更加專注于方法名稱,也就是要做的事,抽象級別更加接近人類的認知。所以,應當盡可能使用函數引用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://tantanit.com/java-how-to-use-method-reference/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天操天天射天天 | 日韩av一级在线观看 | 亚洲欧洲一区二区三区 | 日本一区二区免费播放 | 亚洲精品国产综合区久久久久久久 | 日本一区二区三区四区 | 九九热视频在线观看 | 婷婷网址 | 国产天堂网 | 国产亚洲精品久久久久久久 | 午夜精品久久久久久 | 成视频年人免费看黄网站 | 国产精品99在线观看 | 欧美一级片毛片免费观看视频 | 黄色三级网站 | 成人一区二区三区 | 曰韩一级鸥美一级 | 精品国产资源 | 国产精品爱久久久久久久 | 亚洲黄色在线视频 | 天天干天天草 | 久草网站 | 亚洲成人免费视频 | 国内成人免费视频 | h片在线| 精品麻豆剧传媒av国产九九九 | 欧美一级精品 | 亚洲国产精品99久久久久久久久 | 欧美成年黄网站色视频 | 精品无码久久久久国产 | 欧美日韩在线播放 | 三级在线观看 | 欧美在线亚洲 | 日本三级中文在线电影 | 色www精品视频在线观看 | 久久久久久亚洲av毛片大全 | 日本综合色 | 亚洲在线一区二区 | 玖玖综合网 | 一本大道久久a久久精品综合1 | 欧美成人自拍 |