亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java8 orElse(null.getValue()) 怎么處理

java8 orElse(null.getValue()) 怎么處理

慕無忌1623718 2022-10-07 17:02:40
elseCondition當當前它正在拋出時,這是否可以在一行中寫入nullPointer在我的場景中,returnValue 是一個字符串,它為空。我想寫的條件是if (returnValue != null) {    return returnValue;} else if (elseCondition != null) {    return elseCondition.getValue();} else {    return null;}Optional.ofNullable(returnValue).orElse(elseCondition.getValue()) //throws nullPointer as elseCondition is nullclass ElseCodnition {    private  String value;    getValue() {...}}
查看完整描述

3 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

elseCondition也應該用一個包裹Optional

Optional.ofNullable(returnValue)
        .orElse(Optional.ofNullable(elseCondition)
                        .map(ElseCodnition::getValue)
                        .orElse(null));

也就是說,我不確定這是Optionals 的一個很好的用例。


查看完整回答
反對 回復 2022-10-07
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

我最好將三元運算符用作:

return (returnValue != null) ? returnValue : 
        ((elseCondition != null) ? elseCondition.getValue() : null);

將條件分支成型為鏈式Optionals 聽起來對他們不利。


查看完整回答
反對 回復 2022-10-07
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

這當然不是工作Optional,相反,您可以創建一個調用對象 getter 避免 NPE 的方法:


static <T, R> R applyIfNotNull(T obj, Function<T, R> function) {

    return obj != null ? function.apply(obj) : null;

}

和用例


return returnValue != null ? returnValue : applyIfNotNull(elseCondition, ElseCondition::getValue);


查看完整回答
反對 回復 2022-10-07
  • 3 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號