前言
毫無疑問,Java 8是Java自Java 5(發(fā)布于2004年)之后的最重要的版本。這個版本包含語言、編譯器、庫、工具和JVM等方面的十多個新特性。
Java 8是Java的一個重大版本,有人認為,雖然這些新特性領(lǐng)Java開發(fā)人員十分期待,但同時也需要花不少精力去學(xué)習(xí)。下面本文就給大家詳細介紹了Java8中新特性O(shè)ptional、接口中默認方法和靜態(tài)方法的相關(guān)內(nèi)容,話不多說了,來一起看看詳細的介紹吧。
Optional
Optional 類(java.util.Optional
) 是一個容器類,代表一個值存在或不存在,原來用 null 表示一個值不存在,現(xiàn)在 Optional 可以更好的表達這個概念。并且可以避免空指針異常。
常用方法:
Optional.of(T t)
: 創(chuàng)建一個 Optional 實例。Optional.empty()
: 創(chuàng)建一個空的 Optional 實例。Optional.ofNullable(T t)
若 t 不為 null,創(chuàng)建 Optional 實例,否則創(chuàng)建空實例。isPresent()
: 判斷是否包含值。orElse(T t)
: 如果調(diào)用對象包含值,返回該值,否則返回t。orElseGet(Supplier s)
:如果調(diào)用對象包含值,返回該值,否則返回 s 獲取的值。map(Function f)
如果有值對其處理,并返回處理后的Optional,否則返回 Optional.empty()
flatMap(Function mapper)
與 map 類似,要求返回值必須是Optional。下面引用ImportNew的一段內(nèi)容來告訴我們?nèi)绾握_使用Optional。比如千萬不要寫成這樣子:
public static String getName(User u) { Optionaluser = Optional.ofNullable(u); if (!user.isPresent()) return "Unknown"; return user.get().name; }