您好,登錄后才能下訂單哦!
怎么在JAVA中使用Optional類?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Optional在JAVA中被定義為一個容器類,更確切的說只存一個元素的容器。
container object which may or may not contain a non-null value.
Optional類結構 Optional屬性
Optional類中包含兩個屬性:
類屬性:EMPTY 對象屬性:value
EMPTY屬性用來存放一個value為null的Optional對象。
value屬性用來存放非null對象。
Optional方法
Optional的有兩個構造方法,都被private修飾。
private Optional() { this.value = null; } private Optional(T value) { this.value = Objects.requireNonNull(value); }
無參構造方法用來初始化EMPTY。有參構造方法用來初始化非null對象。
因為構造方法被修飾為私有的,Optional想要實例化對象只能通過類方法調用。Optional提供三個類方法。
empty:返回value為null的Optional對象 of:返回value非null的Optional對象 ofNullable:value的值根據參數是否為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); }
實例方法介紹
方法 | 參數類型 | 返回類型 | 說明 | |
---|---|---|---|---|
get | 無 | T | value為null拋出NoSuchElementException異常 | |
isPresent | 無 | boolean | value為null則返回false | |
ifPresent | Consumer<? super T> | void | 如果Optional實例有值則為其調用consumer,否則不做處理 | |
filter | Predicate<? super T> | Optional<T> | 如果值存在并且滿足提供的謂詞,就返回包括該值的Optional對象;否則返回一個空的Optional對象 | |
map | Function<? super T, ? extends U> | Optional<U> | 如果值存在,就對該值執行提供的mapping函數調用,返回Optional<U>對象 | |
flatMap | Function<? super T, Optional<U>> | Optional<U> | 如果值存在,就對該值執行提供的mapping函數調用,返回非null Optional對象 | |
orElse | T | T | 如果有值則將其返回,否則返回一個默認值 | |
orElseGet | Supplier<? extends T> | T | 如果有值則將其返回,否則返回一個由指定的Supplier接口生成的值 | |
orElseThrow | Supplier<? extends X> | <X extends Throwable> | 如果有值則將其返回,否則拋出一個由指定的Supplier接口生成的異常 |
關于怎么在JAVA中使用Optional類問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。