日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 8 Optional 类

發布時間:2025/3/20 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 8 Optional 类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 8 Optional 類

?Java 8 新特性


Optional 類是一個可以為null的容器對象。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象。

Optional 是個容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。

Optional 類的引入很好的解決空指針異常。

類聲明

以下是一個?java.util.Optional<T>?類的聲明:

public final class Optional<T> extends Object

類方法

序號方法 & 描述
1static <T> Optional<T> empty()

返回空的 Optional 實例。

2boolean equals(Object obj)

判斷其他對象是否等于 Optional。

3Optional<T> filter(Predicate<? super <T> predicate)

如果值存在,并且這個值匹配給定的 predicate,返回一個Optional用以描述這個值,否則返回一個空的Optional。

4<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)

如果值存在,返回基于Optional包含的映射方法的值,否則返回一個空的Optional

5T get()

如果在這個Optional中包含這個值,返回值,否則拋出異常:NoSuchElementException

6int hashCode()

返回存在值的哈希碼,如果值不存在 返回 0。

7void ifPresent(Consumer<? super T> consumer)

如果值存在則使用該值調用 consumer , 否則不做任何事情。

8boolean isPresent()

如果值存在則方法會返回true,否則返回 false。

9<U>Optional<U> map(Function<? super T,? extends U> mapper)

如果存在該值,提供的映射方法,如果返回非null,返回一個Optional描述結果。

10static <T> Optional<T> of(T value)

返回一個指定非null值的Optional。

11static <T> Optional<T> ofNullable(T value)

如果為非空,返回 Optional 描述的指定值,否則返回空的 Optional。

12T orElse(T other)

如果存在該值,返回值, 否則返回 other。

13T orElseGet(Supplier<? extends T> other)

如果存在該值,返回值, 否則觸發 other,并返回 other 調用的結果。

14<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

?

如果存在該值,返回包含的值,否則拋出由 Supplier 繼承的異常

15String toString()

返回一個Optional的非空字符串,用來調試

注意:?這些方法是從?java.lang.Object?類繼承來的。


Optional 實例

我們可以通過以下實例來更好的了解 Optional 類的使用:

Java8Tester.java 文件

import java.util.Optional; public class Java8Tester { public static void main(String args[]){ Java8Tester java8Tester = new Java8Tester(); Integer value1 = null; Integer value2 = new Integer(10); // Optional.ofNullable - 允許傳遞為 null 參數 Optional<Integer> a = Optional.ofNullable(value1); // Optional.of - 如果傳遞的參數是 null,拋出異常 NullPointerException Optional<Integer> b = Optional.of(value2); System.out.println(java8Tester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> b){ // Optional.isPresent - 判斷值是否存在 System.out.println("第一個參數值存在: " + a.isPresent()); System.out.println("第二個參數值存在: " + b.isPresent()); // Optional.orElse - 如果值存在,返回它,否則返回默認值 Integer value1 = a.orElse(new Integer(0)); //Optional.get - 獲取值,值需要存在 Integer value2 = b.get(); return value1 + value2; } }

執行以上腳本,輸出結果為:

$ javac Java8Tester.java $ java Java8Tester 第一個參數值存在: false 第二個參數值存在: true 10 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Java 8 Optional 类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。