[英]Is there an elegant way to initialize and return value of nullable field using Optional
我有一段代碼返回一個字段的值,但也初始化它:
public Observable<Integer> asObservable() {
if (subject == null) {
subject = BehaviorSubject.createDefault(0);
}
return subject;
}
我正在嘗試使用Optional
類來避免if
語句:
public Observable<Integer> asObservableWithOptional() {
Optional.ofNullable(subject)
.executeIfAbsent(() -> BehaviorSubject.createDefault(0));
return subject;
}
Hovewer我對這段代碼仍然不滿意。 有沒有辦法只用一個語句把這個方法變成一個? 類似於以下內容將無法正常工作,因為在調用ofNullable
工廠方法期間尚未初始化subject
:
return Optional.ofNullable(subject)
.executeIfAbsent(() -> BehaviorSubject.createDefault(0))
.get();
注意:我沒有使用原始Java8 API,而是使用此API的aNNiMON端口https://github.com/aNNiMON/Lightweight-Stream-API 。
怎么樣
return subject = Optional.ofNullable(subject).orElseGet(() -> BehaviorSubject.createDefault(0));
當然,你可以使用三元條件運算符而不是創建一個Optional
來立即丟棄它:
return subject != null ? subject : (subject = BehaviorSubject.createDefault(0));
我會建議這樣的事情:
return (subject == null ? (subject = BehaviorSubject.createDefault(0)) : subject);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.