2 回答

TA貢獻1830條經驗 獲得超3個贊
使用Optional.map.
如果你想避免直接Optional.get(),你需要改變你的方法的流程,所以Optional分支,而不是 if 語句。
return subjectInfo.getSubjectName().map(it -> myHomework.writeThesis(
it,
syllabusAndClass.getSyllabus(),
syllabusAndClass.getClass(),
)).orElseGet(() -> /*defaultCodeForNull*/)

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(),
);
}
添加回答
舉報