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

我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看

開發 后端
用Java 8 寫了一段邏輯,同事居然說看不懂,以下是業務背景,大家可以一起看看!

前言

用Java 8 寫了一段邏輯,同事居然說看不懂,以下是業務背景,大家可以一起看看!

[[340793]]

業務背景

首先,業務需求是這樣的,從第三方電商平臺拉取所有訂單,然后保存到公司自己的數據庫,需要判斷是否有物流信息,如果有物流信息,還需要再進行上傳。

而第三方接口返回的數據是 JSON 格式的,其中物流信息卻藏的十分深,如下面所示,JSON 節點是這樣的:

  1. xxxOrder > xxxShippingInfo > xxxShipmentDetails > xxxTrackingInfo > trackingNumber, trackingLink 

基本實現

因為第三方接口返回的數據是 JSON 格式的,所以需要把 JSON 字符串轉換成 Java 對象來進行處理。

  1. @JsonIgnoreProperties(ignoreUnknown = true
  2. public class XxxOrder { 
  3.     /** 
  4.      * 物流信息 
  5.      */ 
  6.     @JsonProperty("shippingInfo"
  7.     private XxxShippingInfo xxxShippingInfo; 

上面只是第一層示例,要拿到物流信息,要依次封裝四層對象,到真正獲取物流信息時要避免空指針,就需要判斷四層才能拿到,如示例所示:

  1. if(xxxOrder != null){ 
  2.     if(xxxOrder.getXxxShippingInfo() != null){ 
  3.         if(xxxOrder.getXxxShippingInfo().getXxxShipmentDetails() != null){ 
  4.             if(xxxOrder.getXxxShippingInfo().getXxxShipmentDetails().getXxxTrackingInfo() != null){ 
  5.                 ... 
  6.             } 
  7.         } 
  8.     } 

獲取一個物流信息這么麻煩,我也是醉了,這樣寫也太不優雅了。

Java 8 實現

因為我知道 Java 8 可以處理這類的需求,所以我從來沒想過用最原始的方式去實現,直接把就用 Java 8 來實現了:

  1. /** 
  2. * /private String[] getFulfillments(XxxOrder xxxOrder) {    return Optional.ofNullable(xxxOrder) 
  3.             .map((o) -> o.getXxxShippingInfo())            .map((si) -> si.getXxxShipmentDetails())            .map((sd) -> sd.getXxxTrackingInfo())            .map((t) -> new String[]{t.getTrackingNumber(), t.getTrackingLink()})            .orElse(null);} 

寫完之后,同事居然都直呼看不懂,還特地跑過來問我。。

實現原理

其實這并沒有用什么高超的技術,就是利用 Java 8 Optional 來實現的,細節就不介紹了 ,主要是為了避免空指針而生的,不懂的可以點擊這里查看這篇文章。

今天就來介紹下 Optional#map 方法實現這段邏輯的原理,來看下 map 的實現源碼:

  1. public<U> Optional<U> map(Function<? super T, ? extends U> mapper) { 
  2.     // 函數式接口不能為null 
  3.     Objects.requireNonNull(mapper);    // 如果當前沒有值,返回一個空的Optional 
  4.     if (!isPresent()) 
  5.         return empty(); 
  6.     else { 
  7.         // 如果當前有值,返回一個函數式處理該值的結果Optional 
  8.         return Optional.ofNullable(mapper.apply(value)); 
  9.     }}// 判斷 Optional Value 有沒有值 
  10. public boolean isPresent() {    return value != null
  11. }// 創建一個 Optional,可以為空 
  12. public static <T> Optional<T> ofNullable(T value) {    return value == null ? empty() : of(value); 

所以回到這段程序:

  1. // 根對象為空就創建一個空Optional,否則就創建一個根對象的Optional 
  2. Optional.ofNullable(xxxOrder)    // 根對象為空就直接返回空Optional,否則返回這個值的 Optional 
  3.     .map((o) -> o.getXxxShippingInfo()) 
  4.     // 下面依次類推…… 
  5.     .map((si) -> si.getXxxShipmentDetails()) 
  6.     .map((sd) -> sd.getXxxTrackingInfo()) 
  7.     .map((t) -> new String[]{t.getTrackingNumber(), t.getTrackingLink()}) 
  8.     // 取不到值就返回 null 
  9.     .orElse(null); 

也許你看完感覺還是看不懂,我承認,確實比較繞,不太好理解,這個只可意會不可言傳了,多看多練就理解了。

這個的關鍵核心在于,調用 map 時,如果 Optional 沒有值就直接返回空的 Optional,而不會調用函數式接口,所以就不會出現空指針。所以只要有一個為空,后面就取不到物流信息。

程序使用了 .xx.xx.xx 這樣的鏈式調用,調用 map 方法就必須是 Optional,而 map 的返回結果就是 Optional。

有一個問題是,如果都為空,那不是所有的 map 都會走一遍?在這種情況下會不會影響性能?編譯器是否會作優化?這個暫不可知。

另外還有一個 flatMap 方法,和 map 有什么區別呢?

flatMap 返回結果需要在函數式接口中封裝 Optional 返回,在這里應用不太合適。

總結

很多人一直都在說有在學習 Java 8 新特性,但在我看來,大部分人并沒有什么實踐,用的都還是最原始的實現方式。

其實我個人是一直在努力學習這方面的知識的,最新的我已經學到 Java 14 了,之前也陸續分享了一系列新特性文章。

所以我現在雖然是個老前浪了,但在新知識學習和掌握上面,我感覺已經走到了很多后浪前面。

責任編輯:未麗燕 來源: Java技術棧
相關推薦

2023-12-30 08:16:34

Django權限控制

2022-06-16 14:07:26

Java代碼代碼review

2020-03-30 16:45:06

代碼看不懂

2020-03-06 11:30:08

JavaGitHub編程

2019-12-09 08:29:26

Netty架構系統

2022-01-05 09:40:03

DIff算法前端

2019-11-18 14:45:13

代碼開發工具

2016-12-16 12:32:50

阿里數據分析職業要求

2022-12-12 07:40:36

服務器項目Serverless

2018-04-12 10:02:57

大數據領域工具

2023-06-30 08:01:04

Reactuse關鍵詞

2022-07-26 14:38:08

JavaScriptWeb安全自動化

2021-02-04 07:55:28

代碼離職互聯網

2020-04-07 12:13:15

Python數據爬蟲

2021-12-09 11:59:49

JavaScript前端提案

2021-10-08 08:58:35

物聯網通信發布者

2019-10-18 09:39:44

爬蟲消息大數據

2019-10-14 09:51:08

爬蟲網絡系統

2025-07-04 02:00:00

2014-07-08 09:21:10

死代碼創意歌曲
點贊
收藏

51CTO技術棧公眾號

国产成人在线电影| 一区二区电影在线观看| 欧美三级电影网站| 日本不卡一区二区三区四区| 精品国精品国产自在久不卡| 精品91在线| 亚洲欧美精品在线| 五月六月丁香婷婷| 麻豆国产在线| 中文字幕一区二区三区四区不卡 | 日本不卡一区二区三区高清视频| 久久高清视频免费| 成人免费网站黄| 九九99久久精品在免费线bt| 一本色道**综合亚洲精品蜜桃冫| 亚洲自拍偷拍一区二区三区| 牛牛热在线视频| 国产激情一区二区三区| 国产成人福利网站| 日本三级欧美三级| 91精品一区二区三区综合在线爱| 日韩精品黄色网| 国产裸体视频网站| 国产美女久久| 欧美日韩中文在线观看| 日韩成人三级视频| 老司机av在线免费看| 久久午夜国产精品| 国偷自产av一区二区三区小尤奈| 国产又黄又猛又爽| 日韩精品免费专区| 2019中文字幕全在线观看| 青青草免费av| 国产精品久久久久久麻豆一区软件| 亚洲美女av在线| 男男一级淫片免费播放| 久久国产精品美女| 欧美精品乱码久久久久久| av免费网站观看| 涩涩网在线视频| 精品国产乱码久久久久久天美| 中国黄色录像片| 午夜在线免费观看视频| 国产婷婷一区二区| 欧美精品一区在线| 蜜芽tv福利在线视频| 成人免费三级在线| 成人在线资源网址| 亚洲精品一区二区三区新线路| 国内一区二区视频| 亚洲最大成人免费视频| 99久久免费国产精精品| 国产一区视频在线看| 国产日本欧美在线观看| 91久久精品国产91性色69| 美女脱光内衣内裤视频久久网站| 国产精品久久久久久久久久久不卡 | 欧美一级片中文字幕| 黑人巨大亚洲一区二区久| 狠狠躁天天躁日日躁欧美| 18岁网站在线观看| 日韩三级影视| 在线亚洲一区观看| 五月天av在线播放| 亚洲欧洲日韩精品在线| 91精品欧美一区二区三区综合在| 色姑娘综合天天| 亚洲一二av| 亚洲国产成人精品一区二区 | 久久色免费在线视频| 国产美女久久久久久| 一区二区三区网站| 欧美极品少妇与黑人| 国产精品老女人| 葵司免费一区二区三区四区五区| 国产精品成人一区| 国产又粗又猛又爽| 成人涩涩免费视频| 欧美系列一区| 激情在线小视频| 亚洲国产一区在线观看| 免费在线观看日韩视频| 四虎精品一区二区免费| 日韩欧美一二三区| 超碰97人人干| 国产精品99一区二区三区| 欧美日韩电影在线观看| 黄色在线观看国产| 激情偷乱视频一区二区三区| 成人欧美一区二区三区黑人免费| 青青操视频在线| 亚洲视频1区2区| 久久综合九色综合88i| 韩日精品一区| 欧美成人video| 日本成人免费视频| 欧美三级免费| 国产精品96久久久久久| www香蕉视频| 国产欧美一区二区精品性色超碰 | 中文欧美日韩| 成人性生交大片免费看视频直播 | 亚洲青青久久| 日韩av影片在线观看| 疯狂撞击丝袜人妻| 欧美一区=区| 91手机在线播放| 95在线视频| 欧美日韩国产专区| 一起草最新网址| 成人网18免费网站| 91精品国产777在线观看| 国产精品欧美激情在线| 久久久蜜桃精品| 久久手机在线视频| 玖玖精品在线| 亚洲欧美日韩国产成人| 久久午夜无码鲁丝片午夜精品| 奇米一区二区三区| 蜜桃久久精品乱码一区二区| 欧美aaa免费| 欧美高清一级片在线| 久久视频精品在线观看| 日韩图片一区| 99在线视频免费观看| 欧美jizzhd欧美| 欧美最猛性xxxxx直播| 国产美女视频免费观看下载软件| 在线精品小视频| 国产中文欧美精品| av电影在线观看| 91久久免费观看| aaaaa级少妇高潮大片免费看| 欧美三级不卡| 成人精品一二区| 久久综合网导航| 欧美高清视频不卡网| 国产精品综合激情| 日韩中文字幕不卡| 日本精品视频一区| 欧美xx视频| 亚洲人成电影在线播放| 亚洲永久精品在线观看| xnxx国产精品| 欧美日韩第二页| 精品在线播放| 国产精品pans私拍| 国产区视频在线| 欧美日韩一区二区三区在线看| 亚洲久久久久久久| 日本亚洲天堂网| 亚洲一区不卡在线| 国产剧情一区二区在线观看| 精品久久国产精品| 国产色片在线观看| 亚洲一区在线播放| 强迫凌虐淫辱の牝奴在线观看| av不卡免费看| 久久天天狠狠| 亚洲不卡系列| 色偷偷噜噜噜亚洲男人的天堂| 一区二区精品视频在线观看| 国产精品美女久久久久久久| 免费成人黄色大片| 欧美+亚洲+精品+三区| 国产aⅴ精品一区二区三区黄| 免费在线小视频| 国产亚洲一级高清| 国产深喉视频一区二区| 亚洲6080在线| 69精品无码成人久久久久久| 久久97超碰色| 亚洲理论电影在线观看| 香蕉视频一区二区三区| 国产精品久久久久久久久免费| 日本在线观看www| 日韩精品一区二区三区中文不卡| 西西44rtwww国产精品| 国产亚洲欧美中文| 黄色一级片免费播放| 亚洲青色在线| 亚洲高清精品中出| 亚洲不卡在线| 欧美在线一级视频| 麻豆av在线免费看| 亚洲国产另类久久精品| 91麻豆精品在线| 一区二区三区丝袜| 成人乱码一区二区三区av| 经典一区二区三区| 国产肉体ⅹxxx137大胆| 少妇精品久久久一区二区三区| 91精品视频在线| 欧美aa在线观看| 久久精品国产亚洲精品| 少妇人妻一区二区| 欧美精品久久久久久久久老牛影院| 日本少妇做爰全过程毛片| 日本一区二区三区免费乱视频| 色欲无码人妻久久精品| 久久中文字幕一区二区三区| 国产对白在线播放| 久久99视频| 成人免费看片网址| 久久亚洲国产精品尤物| 97免费中文视频在线观看| 中文字幕在线播放| 日韩av在线网页| 国产精品无码免费播放| 欧美性xxxxxx| 久久免费播放视频| 国产精品久久久久永久免费观看| 国产精品九九视频| 国产一区二区三区四区五区入口 | 日本乱码一区二区三区不卡| 日韩亚洲欧美中文高清在线| 亚洲欧洲国产综合| 欧美xxxxxxxxx| 国产精品伦理一区| 在线观看免费成人| 在线观看黄网站| 亚洲一区二区三区在线看| 四虎地址8848| 亚洲国产精品av| 精品无码一区二区三区| 99国产欧美另类久久久精品| 日本少妇xxx| 韩国成人福利片在线播放| 香港日本韩国三级网站| 久久久水蜜桃av免费网站| 日本国产中文字幕| 欧美99在线视频观看| 一区二区在线不卡| 青青草成人影院| 日本成人看片网址| 中文字幕av一区二区三区人| 久久精品99| 日韩精品免费一区二区三区竹菊| 国产成人亚洲欧美| 成人av影音| 翡翠波斯猫1977年美国| 午夜视频一区二区在线观看| 亚洲一区二区免费| 日韩激情精品| 99re国产视频| 国产精品一区二区三区美女| 成人自拍网站| 国产精品对白久久久久粗| 99电影在线观看| 99re8这里有精品热视频8在线| 51精品国产人成在线观看| 欧美午夜网站| 成人午夜影院在线观看| 精品自拍偷拍| 欧美高清性xxxxhd | 一区二区三区四区国产| 日韩久久视频| 亚洲综合激情五月| 欧美福利电影在线观看| 天堂8在线天堂资源bt| 最新日韩av| 虎白女粉嫩尤物福利视频| 日韩va欧美va亚洲va久久| www.久久久精品| 国产一区二区看久久| 91人人澡人人爽| 不卡的av电影| 男女做爰猛烈刺激| 亚洲四区在线观看| 黄色一级视频免费观看| 亚洲va欧美va国产va天堂影院| 99久久精品国产亚洲| 欧美中文字幕一二三区视频| 一级片视频免费| 精品噜噜噜噜久久久久久久久试看 | 日韩在线不卡av| 亚洲一区二区三区中文字幕在线 | 欧美日韩国产高清一区二区| 国产农村妇女毛片精品久久| 精品久久人人做人人爱| 日本成人一区| 久久黄色av网站| 97人澡人人添人人爽欧美| 国产mv免费观看入口亚洲| 国产亚洲精彩久久| 国产精成人品localhost| 国产真实有声精品录音| 特大黑人娇小亚洲女mp4| 在线亚洲免费| 无尽裸体动漫2d在线观看| 成人午夜私人影院| www亚洲色图| 亚洲图片有声小说| 最近中文字幕av| 亚洲的天堂在线中文字幕| 欧美精品a∨在线观看不卡| 久久久极品av| 韩漫成人漫画| 国产精品毛片va一区二区三区| 精品一区av| 日韩在线观看a| 久久成人久久鬼色| 国产传媒第一页| 一区二区三区资源| 中文字幕第三页| 日韩电影中文字幕av| av电影免费在线观看| 国产精品69av| 亚州av一区| 免费在线看黄色片| 精品亚洲成av人在线观看| 9.1成人看片免费版| 亚洲一级电影视频| 国产特级黄色片| 永久免费毛片在线播放不卡 | 国产精品久久99久久| 东京久久高清| 在线观看视频黄色| 美腿丝袜亚洲综合| 精品人妻无码一区二区三区换脸| 亚洲一区在线观看免费| 国产aⅴ爽av久久久久成人| 在线成人中文字幕| 网友自拍亚洲| 久久香蕉综合色| 最新亚洲激情| 精品人妻一区二区三区日产| 亚洲免费观看高清完整版在线| 超碰在线免费97| 亚洲香蕉成人av网站在线观看| 高潮在线视频| 国产伦精品一区二区三区四区免费| 亚洲国产精品久久久天堂| 热久久久久久久久| 国产欧美一区二区精品仙草咪| 国产在线观看黄色| 亚洲精品wwww| 偷拍自拍在线看| 久久精品人人做人人爽电影| 99精品99| 黄色录像a级片| 天天综合网 天天综合色| 粉嫩小泬无遮挡久久久久久| 欧美日韩电影在线观看| 在线观看视频一区二区三区| 日本a级片在线观看| 国产一区二区福利| 四虎精品免费视频| 日韩一区二区电影| 伦理av在线| 九九久久99| 欧美亚洲在线| 国产视频不卡在线| 在线不卡a资源高清| av网站网址在线观看| 99久久一区三区四区免费| 黄色成人在线网址| 日韩精品人妻中文字幕有码| 狠狠做深爱婷婷久久综合一区 | 自拍偷拍亚洲精品| 成人动漫视频在线观看| 一级黄色片播放| 国产成人亚洲综合色影视| 懂色av.com| 亚洲欧美日韩国产精品| 日韩黄色三级| 97免费视频观看| 久久人人爽爽爽人久久久| 国产又粗又猛又爽又| xxav国产精品美女主播| 日韩在线成人| 91免费视频网站在线观看| 国产精品视频在线看| 国产偷拍一区二区| 韩国三级日本三级少妇99| 九九久久精品| 亚洲一区精品视频在线观看| 亚洲图片自拍偷拍| 国产小视频免费在线观看| 91深夜福利视频| 亚洲一区二区三区四区五区午夜| 黄色三级生活片| 日韩欧美精品在线视频| 成人美女视频| 成年人三级视频| 久久综合九色综合97婷婷女人 | 欧美xfplay| 蜜桃精品在线| 国产高清不卡无码视频| 99久久精品情趣| 中文字字幕在线观看| 久久久久久久久久久免费| 国产欧美日韩影院| 色哟哟在线观看视频| 欧美性xxxx极品hd欧美风情| 激情成人四房播| 日本一区二区视频| 成人毛片视频在线观看| 性色av一区二区三区四区| 韩剧1988在线观看免费完整版|