精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JDK8 的判空就是這么爽!

開發(fā) 后端
大家都是知道 JDK8 就開始使用 Lambda 表達(dá)式,但是很多不管是在教程上還是在其他的書籍上,都沒有說(shuō)在實(shí)際開發(fā)的時(shí)候去使用上這個(gè) Lambda 表達(dá)式,而且包括 JDK8 里面的一些新的類,也都沒有引入,所以阿粉在這里想要給大家安利一波使用方面的知識(shí)。

[[415977]]

阿粉相信大家肯定所有的開發(fā)者都對(duì)Java8里面的所有的東西都感興趣,雖然目前的 JDK 已經(jīng)更新到 JDK17 了,但是阿粉相信,現(xiàn)在很多公司使用的還都是 JDK8 甚至是 JDK7,但是,就算是有些公司已經(jīng)升級(jí)到 JDK8 但是對(duì)于 JDK8 里面的一些東西的使用,卻沒有使用的淋漓盡致。阿粉今天就給大家放出幾個(gè) JDK8 里面比較好用的。

JDK8

大家都是知道 JDK8 就開始使用 Lambda 表達(dá)式,但是很多不管是在教程上還是在其他的書籍上,都沒有說(shuō)在實(shí)際開發(fā)的時(shí)候去使用上這個(gè) Lambda 表達(dá)式,而且包括 JDK8 里面的一些新的類,也都沒有引入,所以阿粉在這里想要給大家安利一波使用方面的知識(shí)。

Optional類

這個(gè)類對(duì)于大家來(lái)說(shuō),是一個(gè)非常重要的類,不知道大家有沒有被 java.lang.NullPointerException 瘋狂的折磨過,不管是新人開發(fā)還是老開發(fā),遇到這個(gè)問題的時(shí)候,都是頭大的很,因?yàn)槲覀円诖a里面去瘋狂的判斷是否是null,如果不是 null 需要怎么處理,如果是 null 需要怎么處理,反正就是你要是想解決 java.lang.NullPointerException 這個(gè)問題,就免不了去加一些判斷條件,而 Optional 這個(gè)類,則是幫你優(yōu)雅的處理 null 的問題。

我們先看一組 Java7 中的一些判斷空的實(shí)現(xiàn):

  1. User user = usersMapper.selectUserById(userId); 
  2. String userName = user.getUserName(); 
  3.    if(user!= null){ 
  4.        if(userName != null && !userName.isEmpty()){ 
  5.                ..... 
  6.              } 
  7.    } 
  8.   

阿粉相信大家一定都寫過這個(gè)樣子的代碼,因?yàn)槲覀儾恢繱QL查詢出來(lái)的數(shù)據(jù)中是否包含了我們的 Users 對(duì)象,如果要是 Users 對(duì)象,那么就會(huì)無(wú)情的出現(xiàn) java.lang.NullPointerException 這個(gè)空指針異常,這時(shí)候就很尷尬了,老開發(fā)一臉懵逼,我竟然還有的地方?jīng)]有驗(yàn)證?

但是驗(yàn)證了之后,你就會(huì)發(fā)現(xiàn)代碼量是非常的大,而且有點(diǎn)不太美觀,我們?cè)賮?lái)對(duì)比一下 JDK8 中,給我們提供的方法來(lái)進(jìn)行驗(yàn)證的方式。

  1. User user = usersMapper.selectUserById(userId); 
  2. Optional.ofNullable(user
  3.         .map(User::getUserName) 
  4.         .ifPresent(userName->{ 
  5.         .... 
  6.         } 

大家看這種鏈?zhǔn)骄幊蹋琽fNullable() 方法給我們提供了判斷 user 是不是空,并且去校驗(yàn) userName,如果存在,然后執(zhí)行下面的邏輯,相比較 JDK7 的內(nèi)容,相信大家看起來(lái)的話肯定是沒有 JDK7 中的表現(xiàn)的那么的明顯,但是大家看代碼是不是發(fā)現(xiàn)已經(jīng)被處理的妥妥的了。而且非常的優(yōu)雅。

相信大家肯定都看過一些教程,上面會(huì)寫到:

  1. User user = usersMapper.selectUserById(userId); 
  2. Optional<User> userOptional = Optional.ofNullable(user); 
  3. Optional<String> str = userOptional.map(User::getUserName); 
  4. .... 

但是相對(duì)于代碼的可讀性來(lái)說(shuō),我們肯定還是希望使用 JDK7 上面的判斷來(lái)進(jìn)行判斷,但是這種 JDK8 的鏈?zhǔn)骄幊蹋谝欢ǔ潭壬蠝p少了代碼量,并且開發(fā)效率也會(huì)相對(duì)應(yīng)的提升。

如果大家不信,我們可以來(lái)運(yùn)行一下我們的代碼,然后看一下效果。

  1. Optional.ofNullable(user
  2.         .map(User::getUserName) 
  3.         .ifPresent(userName->{ 
  4.             System.out.println("用戶UserName不為空"); 
  5.         }); 

大家看,是不是就出現(xiàn)了我們想要的結(jié)果,一個(gè)判斷 null 的操作,瞬間變得高大上了,而且代碼的逼格瞬間上升一個(gè)檔次。

對(duì)于 Optional 類,在 Java8 實(shí)戰(zhàn)中給出了很多的方法,阿粉也是給大家摘取了一下,做了個(gè)總結(jié),

  • ofNullable 方法 :將指定值用Optional封裝之后返回,如果該值為null,則返回一個(gè)空的Optional對(duì)象
  • empty 方法 :返回一個(gè)空的Optional實(shí)例
  • filter 方法 :如果值存在并且滿足提供的謂詞,就返回包含該值的Optional對(duì)象;否則返回一個(gè)空的 Optional對(duì)象
  • flatMap 方法 :如果值存在,就對(duì)該值執(zhí)行提供的mapping函數(shù)調(diào)用,返回一個(gè)Optional類型的值,否則就返 回一個(gè)空的Optional對(duì)象
  • get 方法 :如果該值存在,將該值用Optional封裝返回,否則拋出一個(gè)NoSuchElementException異常
  • ifPresent 方法 :如果值存在,就執(zhí)行使用該值的方法調(diào)用,否則什么也不做
  • isPresent 方法 :如果值存在就返回true,否則返回false
  • map 方法 :如果值存在,就對(duì)該值執(zhí)行提供的mapping函數(shù)調(diào)用
  • of 方法 :將指定值用Optional封裝之后返回,如果該值為null,則拋出一個(gè)NullPointerException異常
  • orElse 方法:如果有值則將其返回,否則返回一個(gè)默認(rèn)值
  • orElseGet 方法 :如果有值則將其返回,否則返回一個(gè)由指定的Supplier接口生成的值
  • orElseThrow 方法 :如果有值則將其返回,否則拋出一個(gè)由指定的Supplier接口生成的異常

大家看這些方法是不是都有很多相似的,比如 map,flatMap,還有orElse,orElseGet,orElseThrow 方法

map 和 flatMap 比較:

這兩個(gè)都是做 轉(zhuǎn)換值 的操作,區(qū)別就是入?yún)⒌念愋筒皇且粯拥模琺ap的入?yún)⑹?Function mapper 而 flatMap 入?yún)t是 Function > mapper 。

入?yún)⒌牟煌簿蛯?dǎo)致了他們獲取返回值也是不同的,map中獲取的返回值自動(dòng)被Optional包裝,flatMap中返回值保持不變,但必須是Optional類型。

這么一看總是感覺不太對(duì)的樣子,我們?nèi)ピ创a里面看看是什么樣子的。

  1. map: 
  2.  
  3. public<U> Optional<U> map(Function<? super T, ? extends U> mapper) { 
  4.         Objects.requireNonNull(mapper); 
  5.         if (!isPresent()) 
  6.             return empty(); 
  7.         else { 
  8.             return Optional.ofNullable(mapper.apply(value)); 
  9.         } 
  10.     } 
  11.  
  12.  
  13. flatMap: 
  14.  
  15.  public<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper) { 
  16.         Objects.requireNonNull(mapper); 
  17.         if (!isPresent()) 
  18.             return empty(); 
  19.         else { 
  20.             return Objects.requireNonNull(mapper.apply(value)); 
  21.         } 
  22.     } 

map 方法參數(shù)中的函數(shù) mapper 輸出的是值,然后 map 方法會(huì)使用 Optional.ofNullable 將其包裝為 Optional;而 flatMap 要求參數(shù)中的函數(shù) mapper 輸出的就是 Optional。

一個(gè)是比較聰明的,另外一個(gè)就相對(duì)來(lái)說(shuō)不是那么聰明了,人家會(huì)自己包裝呀,是不是?

同樣的比較還有 orElse,orElseGet,orElseThrow 但是這個(gè)阿粉就不再給大家絮叨了,因?yàn)樯厦娴姆椒ń忉屔隙己苊黠@的能看到了。

Lambda 表達(dá)式

Lambda 表達(dá)式實(shí)際上就是相當(dāng)于是一個(gè)匿名內(nèi)部類,他就是讓我們開發(fā)的人把函數(shù)當(dāng)成參數(shù)傳遞給某個(gè)方法,然后把代碼當(dāng)做數(shù)據(jù)去處理。

阿粉相信大家肯定都了解這塊,就比如說(shuō)下面的代碼對(duì)比:

  1. Java7: 
  2.  
  3.     List<String> stringList = Arrays.asList("1""2""3"); 
  4.         for (String st:stringList) { 
  5.             System.out.println(st); 
  6.         } 
  7.  
  8. Java8: 
  9.  
  10. Arrays.asList("1""2""3").forEach((String st)->{ 
  11.             System.out.println(st); 
  12.         }); 

同樣的一個(gè)循環(huán),我們肯定想用第二種寫法不是么?

Java8 實(shí)際上在從發(fā)布開始,很多公司都在用,但是也有很多人依舊選擇是 Java7,因?yàn)椴幌敫淖冏约旱膶W(xué)習(xí)風(fēng)格,阿粉相信大家如果是一個(gè)決心在開發(fā)領(lǐng)域一直做下去的人,那么肯定會(huì)保持一個(gè)不斷學(xué)習(xí)的心,所以,你是這樣的人么?

 

責(zé)任編輯:武曉燕 來(lái)源: Java極客技術(shù)
相關(guān)推薦

2022-03-30 07:32:10

JDK8異步編程

2022-05-31 07:32:19

JDK8API工具

2022-04-21 09:48:54

JDK8JDK7編碼

2022-04-21 07:34:34

JDK8JDK7數(shù)據(jù)

2025-11-05 02:00:00

2021-02-26 10:21:35

比特幣投資金融

2021-01-15 10:03:18

JDK8日期API

2015-09-10 14:40:32

大數(shù)據(jù)神奇

2017-02-24 13:20:13

搜索引擎數(shù)據(jù)結(jié)構(gòu)架構(gòu)

2025-10-20 02:00:00

JDK8JDK17Java

2022-04-18 09:54:37

JDK8日期前端

2024-04-08 07:27:02

JDK8ZGC垃圾回收

2014-07-03 13:51:10

Android LAndroid L源碼

2014-12-09 13:06:30

華為移動(dòng)公交

2021-05-24 10:50:10

Git命令Linux

2017-11-28 15:29:04

iPhone X網(wǎng)頁(yè)適配

2018-12-17 09:46:32

OracleJDK8

2017-03-09 10:45:31

定義內(nèi)存泄漏

2021-08-19 06:58:48

CSS頁(yè)面布局

2021-12-28 16:54:03

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕永久在线视频| 亚洲电影一二三区| 欧美精品99久久久| 小说区图片区色综合区| 在线影视一区二区三区| 欧美少妇一级片| 三级视频在线看| 七七婷婷婷婷精品国产| 欧美俄罗斯乱妇| 欧美 日韩 国产 成人 在线观看| 国产aa精品| 欧美视频国产精品| 一本—道久久a久久精品蜜桃| 免费观看黄色一级视频| 日韩精品亚洲一区二区三区免费| 九九热精品在线| 日韩人妻无码精品综合区| 国产高清视频一区二区| 色中色一区二区| 成年在线观看视频| av资源在线观看免费高清| 国产精品亚洲视频| 国产精品99久久久久久白浆小说 | 91亚洲精华国产精华精华液| 国产精品三级在线| 欧美不卡视频在线观看| 国产精品精品| 亚洲无av在线中文字幕| 国产亚洲精品成人a| 欧洲成人一区| 色综合中文字幕国产| 少妇高潮流白浆| 国产二区视频在线观看| k8久久久一区二区三区| 亚洲专区国产精品| 一区精品在线观看| 性欧美videos另类喷潮| 国产+成+人+亚洲欧洲| 免费看一级大片| 日本欧美国产| 亚洲人成毛片在线播放| 一出一进一爽一粗一大视频| 亚洲精品国产九九九| 欧美老女人第四色| 国产嫩草在线观看| 欧美色图天堂| 亚洲天堂免费看| 亚洲欧洲一区二区| 成人高清网站| 国产欧美中文在线| 日本a级片久久久| 天堂av电影在线观看| 国产成人综合网| 91成人免费视频| 99热这里只有精品9| 精品夜夜嗨av一区二区三区| 国产精品夜色7777狼人| 中文字幕 日韩有码| 日韩av在线免费观看不卡| 欧美在线视频免费| 亚洲另类欧美日韩| 久久国产高清| 国产精品美女久久久久久免费 | 日韩视频永久免费| 天天干天天曰天天操| 国产精品777777在线播放| 欧美喷水一区二区| 狠狠操狠狠干视频| 日韩一级视频| 日韩一区二区高清| 成人做爰69片免费| 欧美自拍视频| 亚洲视频自拍偷拍| 污污视频网站在线免费观看| 欧美gayvideo| 欧美国产在线视频| 91蜜桃视频在线观看| 在线视频日韩| 国产成人精品久久二区二区| 综合久久中文字幕| 国产真实乱偷精品视频免| 亚洲影院色在线观看免费| 高清一区二区三区四区| 91社区在线播放| 午夜精品亚洲一区二区三区嫩草 | 色婷婷综合久久久久中文字幕| 欧美18—19sex性hd| 欧美日韩三级一区| 潘金莲一级淫片aaaaa| 日韩三区视频| 色天天综合狠狠色| 精品视频久久久久| 美女爽到呻吟久久久久| 91精品视频专区| 亚洲精品综合久久| 久久久精品黄色| 亚洲国产精品女人| 高清视频在线观看三级| 欧美亚洲国产一区二区三区va | 激情网站五月天| 亚洲精品69| 亚洲国产精品久久久久秋霞不卡| 爱爱免费小视频| 国产精品久久占久久| 97精品国产aⅴ7777| 波多野结衣高清在线| 国产一区二区三区香蕉| 久久精品成人一区二区三区蜜臀| 青青影院在线观看| 精品久久久久久久久国产字幕 | 成人免费看黄yyy456| 欧美性xxxx69| 在线观看午夜av| 91高清在线观看| 久草免费资源站| 欧美成人激情| 青青精品视频播放| 国产成人精品亚洲精品色欲| 久久久久免费观看| 国产精品一线二线三线| 精品久久99| 日韩二区三区在线| 亚洲国产精品免费在线观看| 日韩在线一二三区| 国产99在线免费| 毛片在线播放a| 色噜噜久久综合| 国产精品入口麻豆| 亚洲一区色图| 国产精品视频自在线| 日本成人一区二区三区| 亚洲午夜激情网页| av噜噜在线观看| 欧美一区二区三区高清视频| 欧美性在线视频| 欧日韩在线视频| 亚洲精品乱码久久久久久| 麻豆三级在线观看| 欧美人与物videos另类xxxxx| 97在线视频精品| 丰满人妻一区二区三区无码av| 中文字幕一区二区在线观看| 免费日韩视频在线观看| 秋霞蜜臀av久久电影网免费| 久久久视频免费观看| 国产视频在线观看视频| 国产精品第一页第二页第三页| 国产v亚洲v天堂无码久久久| 任你躁在线精品免费| 欧美激情视频在线观看| 精品国产99久久久久久宅男i| 国产精品激情偷乱一区二区∴| www.这里只有精品| 日韩大片在线观看| 国产欧美精品久久久| av电影在线网| 欧美日韩国产首页| 欧美日韩国产一二三区| 蜜臀av性久久久久av蜜臀妖精| 日韩在线电影一区| 精品裸体bbb| 在线精品国产欧美| 中文字幕乱码一区二区| 国产精品美女久久久久久2018| 久久久久久三级| 日韩成人激情| 91精品国产91久久久久青草| av黄在线观看| 欧美不卡视频一区| 日韩av在线电影| 99re亚洲国产精品| 青青在线视频免费| 久久国产亚洲精品| 亚洲最大av在线| 波多野结衣中文字幕久久| 日韩精品在线播放| 国产乱码77777777| 亚洲欧美在线高清| 色婷婷狠狠18禁久久| 激情文学一区| 日韩影视精品| 免费一区二区三区在线视频| 91成品人片a无限观看| 国产高清视频在线| 在线电影院国产精品| 久久久久久久久久网站| jvid福利写真一区二区三区| 男人的天堂日韩| 在线看片不卡| 免费精品视频一区二区三区| 日韩福利影视| 韩国三级电影久久久久久| 国产九九在线| 日韩一区二区电影网| 伊人中文字幕在线观看| 中文字幕综合网| 超碰男人的天堂| 久久av资源网| 欧美亚洲精品一区二区| 欧美电影一二区| 久久女同互慰一区二区三区| 操人视频在线观看欧美| 粉嫩小泬无遮挡久久久久久| 一本大道久久精品懂色aⅴ| 日韩欧美在线视频播放| 成人爽a毛片一区二区免费| 免费在线观看毛片网站| 亚洲九九在线| 欧美另类一区| 69视频在线观看免费| 国产精品系列在线观看| 国产成人亚洲精品无码h在线| 91成人影院| 青青草原亚洲| 精品网站aaa| 91精品中国老女人| 欧美无毛视频| 国a精品视频大全| 成人在线免费看黄| 日韩精品视频三区| 精品人妻伦一二三区久| 蜜臀av性久久久久蜜臀aⅴ四虎| 男人添女荫道口图片| 久久国产电影| 日韩精品一区二区三区外面 | 色综合久久久无码中文字幕波多| 特级丰满少妇一级aaaa爱毛片| 一本久久综合亚洲鲁鲁五月天| 欧美大片xxxx| 国产精品毛片a∨一区二区三区| 37p粉嫩大胆色噜噜噜| 国产91丝袜在线观看| 91高清国产视频| 乱人伦精品视频在线观看| 亚洲 欧美 综合 另类 中字| 一本一本久久a久久综合精品| 午夜精品视频在线观看一区二区| 女厕嘘嘘一区二区在线播放 | 国产v综合ⅴ日韩v欧美大片| 成人观看网址| 久久久影视精品| 色a资源在线| 欧美不卡视频一区发布| 欧美日韩在线看片| 最近2019中文字幕在线高清| 成年人在线视频免费观看| 亚洲欧美日韩精品久久亚洲区| 天堂在线中文| 精品久久五月天| 好男人在线视频www| 欧美xingq一区二区| 亚洲美女性生活| 精品国产乱码久久久久久蜜臀 | 成人激情黄色小说| 韩国av中国字幕| 懂色av一区二区夜夜嗨| 久久久久久久久久影视| 成人国产在线观看| 久久久老熟女一区二区三区91| 成人免费高清在线| 黄色激情在线观看| 不卡av电影在线播放| 亚洲啪av永久无码精品放毛片| 成人深夜视频在线观看| 黄色录像a级片| xnxx国产精品| 四虎成人免费影院| 国产精品色哟哟| 中文字幕观看av| 一区二区理论电影在线观看| 亚洲精品在线观看av| 精品欧美一区二区三区| 日韩精品一区不卡| 6080国产精品一区二区| 亚洲乱码在线观看| 日韩激情视频在线| 国产在线中文字幕| 久久精品国产清自在天天线| 中文在线免费| 97国产精品免费视频| 天天综合网站| 亚洲www视频| 加勒比中文字幕精品| 欧美黑人3p| 五月激情综合| 成人一对一视频| 日本中文字幕一区| 26uuu国产| 久久久综合九色合综国产精品| 国产三级在线观看完整版| 亚洲精品国产无天堂网2021| 中文字幕在线观看视频网站| 欧美日韩国产综合久久 | 欧美精选视频一区二区| 国产专区欧美专区| 国产精品欧美大片| 亚洲第一在线综合在线| 亚洲一级影院| 狠狠躁狠狠躁视频专区| 成人国产一区二区三区精品| 在线不卡av电影| 亚洲精品高清在线| caoporn国产| 精品美女一区二区| 成人18在线| 国产91精品久| 中文在线免费一区三区| 亚洲精品电影在线一区| 日韩一区二区免费看| 色呦色呦色精品| 久久精品一二三| 日本特黄特色aaa大片免费| 色8久久人人97超碰香蕉987| 成人毛片在线免费观看| 中文字幕日韩在线播放| 午夜不卡影院| 国产精品久久久久久久天堂第1集| 成人vr资源| av天堂永久资源网| 福利视频网站一区二区三区| 亚洲一级理论片| 色激情天天射综合网| 韩国av永久免费| 久久91精品国产91久久久| 国产极品一区| 日本一区二区高清视频| 国产日韩欧美一区在线| 不许穿内裤随时挨c调教h苏绵| 亚洲欧美一区二区三区极速播放 | 亚洲伦理一区二区三区| 日本久久电影网| 桃花色综合影院| 久久久伊人日本| 国产精品chinese在线观看| 可以在线看黄的网站| 久久99在线观看| 国产白丝一区二区三区| 欧美专区亚洲专区| 国产精品天堂| 国产成人一区二区在线| 国产精品亚洲人成在99www| 成人免费在线小视频| 不卡高清视频专区| 久久精品视频9| 精品国产污网站| 成人在线免费观看黄色| 成人av影视在线| 亚洲小说欧美另类婷婷| 国产亚洲精品成人a| 亚洲一区在线电影| 亚洲黄色小说网址| 欧美激情国产日韩精品一区18| 一区二区三区四区精品视频| 人人妻人人澡人人爽欧美一区| 国产一区二区三区免费播放| 日本精品人妻无码77777| 欧美精品1区2区3区| 黄色动漫在线观看| 51国产成人精品午夜福中文下载| 自拍偷拍欧美| 95视频在线观看| 欧美日韩国产激情| 欧美巨乳在线| 国产精品一香蕉国产线看观看| 99热国内精品| 亚洲少妇一区二区| 亚洲国产精品综合小说图片区| 神宫寺奈绪一区二区三区| 91av网站在线播放| 国产一区日韩| 三级一区二区三区| 亚洲精品久久久蜜桃| 人妻一区二区三区四区| 68精品国产免费久久久久久婷婷 | 欧美jizz18| 粉嫩av一区二区三区天美传媒| a亚洲天堂av| а中文在线天堂| 久久久精品电影| 噜噜噜天天躁狠狠躁夜夜精品 | 日韩电影在线观看永久视频免费网站| 在线一区av| 中日韩在线视频| 成人精品视频一区| 中文字幕在线天堂| 伦理中文字幕亚洲| 精品少妇3p| 尤物国产在线观看| 亚洲国产你懂的| av电影在线播放高清免费观看| 亚洲综合中文字幕在线| 乱码第一页成人| 久久久久黄色片| 国产一区二区三区在线免费观看| japansex久久高清精品| 日韩av高清在线看片| 国产精品久99| 婷婷丁香花五月天| 成人激情在线观看| 在线亚洲观看|