Optional<Long>totalLanding= ....(get it from somewhere);
Optional<Long>totalSharing = ...(get it from somewhere);


我不想在语法上而是在逻辑上做这样的事情

Optional<Long>total = totalLanding+totalSharing;


这样,如果两个都为空,则total应该为空,如果其中一个具有值,那么total应该具有那个值,而两个都都具有值,那么应该将它们相加并存储在total中

最佳答案

如何使用Stream

Optional<Long> total = Stream.of(totalLanding,totalSharing)
                             .filter(Optional::isPresent)
                             .map(Optional::get)
                             .reduce(Long::sum);


顺便说一句,我用OptionalLong代替Optional<Long>

解决方案将类似于:

OptionalLong total = Stream.of(totalLanding,totalSharing)
                           .filter(OptionalLong::isPresent)
                           .mapToLong(OptionalLong::getAsLong)
                           .reduce(Long::sum);

07-24 20:13