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);