摘要:存在即返回?zé)o則提供默認(rèn)值而不是存在即返回?zé)o則由函數(shù)來(lái)產(chǎn)生而不要存在才對(duì)它做點(diǎn)什么而不要如下多個(gè)級(jí)聯(lián)間自動(dòng)加非空校驗(yàn)之前每一級(jí)調(diào)用的展開(kāi)都需要放一個(gè)值的判斷。注更應(yīng)該被視為一個(gè)私有方法。
三種構(gòu)造方式:?Optional.of(obj)、Optional.ofNullable(obj)?、Optional.empty()。
//存在即返回, 無(wú)則提供默認(rèn)值 return?user.orElse(null);??//而不是?return?user.isPresent()???user.get()?:?null; //存在即返回, 無(wú)則由函數(shù)來(lái)產(chǎn)生 return?user.orElseGet(()?->?fetchUser());?//而不要?return?user.isPresent()???user:?fetchUser(); //存在才對(duì)它做點(diǎn)什么 user.ifPresent(System.out::println); //而不要如下 if?(user.isPresent())?{ ??System.out.println(user.get()); } //多個(gè)級(jí)聯(lián)間自動(dòng)加非空校驗(yàn) return?Optional.of(new User()) .map(User::getName) .map(String::toUpperCase) .orElse("zyf"); //Java8之前, 每一級(jí)調(diào)用的展開(kāi)都需要放一個(gè) null 值的判斷。 User?user?=?..... if(user?!=?null)?{ ??String?name?=?user.getUsername(); ??if(name?!=?null)?{ ????return?name.toUpperCase(); ??}?else?{ ????return?null; ??} }?else?{ ??return?null; } //orElseThrow Optionalnum = Optional.of(1); num .filter(s -> s < 0) .orElseThrow(() -> new RuntimeException("zyf"));
注:
Optional.isPresent()?更應(yīng)該被視為一個(gè)私有方法。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67262.html
摘要:上一篇小樂(lè)帶大家了解了新特性之,接下來(lái)將會(huì)繼續(xù)述說(shuō)新特性之類是一個(gè)容器類,代表一個(gè)值存在或不存在,原來(lái)用表示一個(gè)值不存在,現(xiàn)在可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常。如果有值則將其返回,否則拋出。隱士地其中進(jìn)行了判斷。 上一篇小樂(lè)帶大家了解了Java8新特性之Stream,接下來(lái)將會(huì)繼續(xù)述說(shuō)Java新特性之Optional showImg(https://segmentfaul...
摘要:于是,在引入了,用來(lái)代表一種可能有可能沒(méi)有的數(shù)據(jù),可以用來(lái)緩解空指針異常的問(wèn)題。 一位智者說(shuō)過(guò),沒(méi)有處理過(guò)空指針異常就不算一個(gè)真正的 Java 程序員。這當(dāng)然是開(kāi)玩笑,但是空指針異常確實(shí)是很多程序出錯(cuò)的源頭。于是,在 Java 8 引入了 java.util.Optional,Optional 用來(lái)代表一種 可能有可能沒(méi)有 的數(shù)據(jù),可以用來(lái)緩解空指針異常的問(wèn)題。 簡(jiǎn)單地說(shuō),Option...
摘要:工具類基本概念類的使用對(duì)象創(chuàng)建常用方法基本概念類是一個(gè)可以為的容器對(duì)象可以保存指定類型的值也可以只保存要么有值要么為中提供很多方法來(lái)避免顯式的進(jìn)行空值檢查如果值存在則調(diào)用方法會(huì)返回調(diào)用方法就會(huì)返回這個(gè)對(duì)象類是一個(gè)沒(méi)有子類的 ...
摘要:本文已收錄修煉內(nèi)功躍遷之路的為解決空的問(wèn)題帶來(lái)了很多新思路,查看源碼,實(shí)現(xiàn)非常簡(jiǎn)單,邏輯也并不復(fù)雜。 本文已收錄【修煉內(nèi)功】躍遷之路 showImg(https://segmentfault.com/img/bVbrCvp?w=852&h=480); Java8的Optional為解決空的問(wèn)題帶來(lái)了很多新思路,查看Optional源碼,實(shí)現(xiàn)非常簡(jiǎn)單,邏輯也并不復(fù)雜。Stuart Ma...
摘要:但返回的是一個(gè)類型的對(duì)象,這意味著操作的結(jié)果是一個(gè)類型的對(duì)象。反之,如果對(duì)象存在,這次調(diào)用就會(huì)將其作為函數(shù)的輸入,并按照與方法的約定返回一個(gè)對(duì)象。 一、Optional 類入門 Java 8中引入了一個(gè)新的類java.util.Optional。變量存在時(shí),Optional類只是對(duì)類簡(jiǎn)單封裝。變量不存在時(shí),缺失的值會(huì)被建模成一個(gè)空的Optional對(duì)象,由方法Optional.empt...
摘要:與方法的區(qū)別在于,方法傳入的參數(shù)為一個(gè)接口的實(shí)現(xiàn)當(dāng)中有值的時(shí)候,返回值當(dāng)中沒(méi)有值的時(shí)候,返回從該獲得的值。為的用戶沒(méi)有找到舉一個(gè)的用途在的控制器中,我們可以配置統(tǒng)一處理各種異常。 寫過(guò) Java 程序的同學(xué),一般都遇到過(guò) NullPointerException :) —— 為了不拋出這個(gè)異常,我們便會(huì)寫如下的代碼: User user = getUserById(id); if (u...
閱讀 678·2021-11-15 11:37
閱讀 4135·2021-09-09 09:34
閱讀 3573·2019-08-30 15:52
閱讀 2613·2019-08-29 14:03
閱讀 2854·2019-08-26 13:36
閱讀 1597·2019-08-26 12:16
閱讀 1602·2019-08-26 11:45
閱讀 3494·2019-08-23 18:41