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

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

如何使用可選參數返回函數值?

如何使用可選參數返回函數值?

侃侃無極 2022-05-25 10:42:24
subjectInfo有 optional subjectName,并且直接在 optional 上使用 get 是代碼氣味,并且要使用 optional 如果存在,我必須創建最終變量,我在其中收集結果并最終返回我試圖避免的,有沒有更好的方法呢?public String homework() { //If then else conditions based on different criteriaif (isValidSyllabusAndClass()) {    return something;} else {    return myHomework.writeThesis(               subjectInfo.getSubjectName().get(),               syllabusAndClass.getSyllabus(),               syllabusAndClass.getClass(),           );    }}
查看完整描述

2 回答

?
牛魔王的故事

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

使用Optional.map.


如果你想避免直接Optional.get(),你需要改變你的方法的流程,所以Optional分支,而不是 if 語句。


return subjectInfo.getSubjectName().map(it -> myHomework.writeThesis(

           it,

           syllabusAndClass.getSyllabus(),

           syllabusAndClass.getClass(),

       )).orElseGet(() -> /*defaultCodeForNull*/)


查看完整回答
反對 回復 2022-05-25
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果subjectInfo是空的,那么你會NullPointerException在這一點上得到


subjectInfo.getSubjectName().get()

所以我建議使用orElse(T other)in Optional,如果對象存在,它將返回它,否則它將返回傳遞的默認值


public T orElse(T other)


如果存在則返回值,否則返回其他值。


subjectInfo.getSubjectName().orElse("Default subject name")

或者只是你可以檢查使用isPresent()


else if(subjectInfo.getSubjectName.isPresent()) {

  return myHomework

       .writeThesis(subjectInfo.getSubjectName().get(),

                        syllabusAndClass.getSyllabus(),

                        syllabusAndClass.getClass(),

                        );

 }


查看完整回答
反對 回復 2022-05-25
  • 2 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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