您好,登錄后才能下訂單哦!
這篇“Java8新特性Optional類怎么應用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java8新特性Optional類怎么應用”文章吧。
空值異常是應用運行時常見的異常,傳統方式為了編寫健壯的應用,常常使用多層嵌套邏輯判斷回避空指針異常。Java8新特性之Optional
為此類問題提供了優雅的解決方式。
public class LoginUser implements UserDetails { private Long deptId; private String token; private Long loginTime; private Long expireTime; private String ipaddr; private String loginLocation; private String browser; private String os; private SysUser user; }
public class SysUser { private Long userId; private Long deptId; private String userName; }
相關Setter
和Getter
方法自行添加。
/** * 普通嵌套判斷方式判斷空值 * * @param loginUser 登錄用戶體 * @return 用戶ID */ public Long getUserId(LoginUser loginUser){ if (loginUser!=null) { SysUser user = loginUser.getUser(); if (user!=null) { return user.getUserId(); } } return null; }
方法參數傳遞的變量loginUser
使用前不確定是否為空,因此需要邏輯判斷;user
變量使用前不確定是否為空,因此需要邏輯判斷。兩層邏輯判斷之后,方能安心調用獲取UserId
方法。
顯而易見,當對象嵌套層次較深時,需要做的邏輯判斷越多,代碼越復雜。
/** * 通過Optinal處理空值判斷 * * @param loginUser 登錄用戶體 * @return 用戶ID */ public Long getUserId(LoginUser loginUser) { return Optional.ofNullable(loginUser) .map(LoginUser::getUser).map(SysUser::getUserId).orElse(null); }
在滿足同樣需求的前提下,使用Optional
類代碼量更少,業務邏輯更清晰。
Optional
使用方法引用的語法,屬于Lambda表達式的一種。
以上就是關于“Java8新特性Optional類怎么應用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。