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