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接口生成的異常
如您對本文有疑問或者有任何想說的,請點選進行留言回複,萬千網友為您解惑!