orElse 是無論如何都會執行的。例如一下代碼:
Optional<ImportHistorySummaryEntity> entityOptional = summaryRepository.findFirstByIhsTime(CalFunction.stringToDate(FRONT_END_SHORT_DATE_FORMAT, dateString));
ImportHistorySummaryEntity summaryEntity = entityOptional.orElse(newSummaryEntity(FRONT_END_SHORT_DATE_FORMAT, dateString));
即使 entityOptianl 並非 Optional.empty, 第二行的 newSummaryEntity(FRONT_END_SHORT_DATE_FORMAT, dateString) 代碼還是會運行的。
即使賦值的時候 summaryEntity 不會賦予 orElse 的值 !!
即使賦值的時候 summaryEntity 不會賦予 orElse 的值 !!
即使賦值的時候 summaryEntity 不會賦予 orElse 的值 !!
而 orElseGet 則不會有這個問題