JAVA Optional類用法分享
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返回對應的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ù)類型 | 返回類型 | 說明 | |
|---|---|---|---|---|
| get | 無 | T | value為null拋出NoSuchElementException異常 | |
| isPresent | 無 | boolean | value為null則返回false | |
| ifPresent | Consumer<? super T> | void | 如果Optional實例有值則為其調(diào)用consumer,否則不做處理 | |
| filter | Predicate<? super T> | Optional<T> | 如果值存在并且滿足提供的謂詞,就返回包括該值的Optional對象;否則返回一個空的Optional對象 | |
| map | Function<? super T, ? extends U> | Optional<U> | 如果值存在,就對該值執(zhí)行提供的mapping函數(shù)調(diào)用,返回Optional<U>對象 | |
| flatMap | Function<? super T, Optional<U>> | Optional<U> | 如果值存在,就對該值執(zhí)行提供的mapping函數(shù)調(diào)用,返回非null Optional對象 | |
| orElse | T | T | 如果有值則將其返回,否則返回一個默認值 | |
| orElseGet | Supplier<? extends T> | T | 如果有值則將其返回,否則返回一個由指定的Supplier接口生成的值 | |
| orElseThrow | Supplier<? extends X> | <X extends Throwable> | 如果有值則將其返回,否則拋出一個由指定的Supplier接口生成的異常 | |
相關(guān)文章
詳解SpringCloud Gateway 2020.0.2最新版
這篇文章主要介紹了SpringCloud Gateway 2020.0.2最新版,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
spring Data jpa簡介_動力節(jié)點Java學院整理
這篇文章主要介紹了spring Data jpa簡介的相關(guān)資料,需要的朋友可以參考下2017-09-09
SpringBoot HikariCP連接池監(jiān)控實現(xiàn)方案
文章介紹了五種監(jiān)控SpringBoot應用程序中HikariCP連接池狀態(tài)和性能的工具和技術(shù),包括SpringBootActuator、Micrometer、Prometheus+Grafana、HikariCP自帶的Metrics以及NewRelic/Datadog等第三方服務,每種方法都有其特點和配置步驟2025-01-01
使用springmvc參數(shù)接收boolean類型參數(shù)的問題
這篇文章主要介紹了使用springmvc參數(shù)接收boolean類型參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01

