溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在JAVA中使用Optional類

發(fā)布時間:2021-04-01 17:37:15 來源:億速云 閱讀:115 作者:Leah 欄目:編程語言

怎么在JAVA中使用Optional類?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Optional在JAVA中被定義為一個容器類,更確切的說只存一個元素的容器。

container object which may or may not contain a non-null value.

Optional類結(jié)構(gòu) Optional屬性

Optional類中包含兩個屬性:

類屬性:EMPTY 對象屬性:value

EMPTY屬性用來存放一個value為null的Optional對象。
value屬性用來存放非null對象。

Optional方法

Optional的有兩個構(gòu)造方法,都被private修飾。

private Optional() {
  this.value = null;
}
private Optional(T value) {
  this.value = Objects.requireNonNull(value);
}

無參構(gòu)造方法用來初始化EMPTY。有參構(gòu)造方法用來初始化非null對象。

因為構(gòu)造方法被修飾為私有的,Optional想要實例化對象只能通過類方法調(diào)用。Optional提供三個類方法。

empty:返回value為null的Optional對象 of:返回value非null的Optional對象 ofNullable:value的值根據(jù)參數(shù)是否為null返回對應(yīng)的Optional對象

public static<T> Optional<T> empty() {
  Optional<T> t = (Optional<T>) EMPTY;
  return t;
}

public static <T> Optional<T> of(T value) {
  return new Optional<>(value);
}

public static <T> Optional<T> ofNullable(T value) {
  return value == null ? empty() : of(value);
}

實例方法介紹

方法參數(shù)類型返回類型說明
getTvalue為null拋出NoSuchElementException異常
isPresentbooleanvalue為null則返回false
ifPresentConsumer<? super T>void如果Optional實例有值則為其調(diào)用consumer,否則不做處理
filterPredicate<? super T>Optional<T>如果值存在并且滿足提供的謂詞,就返回包括該值的Optional對象;否則返回一個空的Optional對象
mapFunction<? super T, ? extends U>Optional<U>如果值存在,就對該值執(zhí)行提供的mapping函數(shù)調(diào)用,返回Optional<U>對象
flatMapFunction<? super T, Optional<U>>Optional<U>如果值存在,就對該值執(zhí)行提供的mapping函數(shù)調(diào)用,返回非null Optional對象
orElseTT如果有值則將其返回,否則返回一個默認(rèn)值
orElseGetSupplier<? extends T>T如果有值則將其返回,否則返回一個由指定的Supplier接口生成的值
orElseThrowSupplier<? extends X><X extends Throwable>如果有值則將其返回,否則拋出一個由指定的Supplier接口生成的異常

關(guān)于怎么在JAVA中使用Optional類問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI