天天看點

Optional java 用法_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 optional empty() {

optional t = (optional) empty;

return t;

}

public static optional of(t value) {

return new optional<>(value);

}

public static optional 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

如果值存在并且滿足提供的謂詞,就傳回包括該值的optional對象;否則傳回一個空的optional對象

map

function super t, ? extends u>

optional

如果值存在,就對該值執行提供的mapping函數調用,傳回optional對象

flatmap

function super t, optional>

optional

如果值存在,就對該值執行提供的mapping函數調用,傳回非null optional對象

orelse

t

t

如果有值則将其傳回,否則傳回一個預設值

orelseget

supplier extends t>

t

如果有值則将其傳回,否則傳回一個由指定的supplier接口生成的值

orelsethrow

supplier extends x>

如果有值則将其傳回,否則抛出一個由指定的supplier接口生成的異常

如您對本文有疑問或者有任何想說的,請點選進行留言回複,萬千網友為您解惑!