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 则不会有这个问题