orElse 和 orElseGet 的区别


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM