使用 API of Java 8 的新 API 的 CollectionUtills 的编译错误

Compilation error using CollectionUtills of the new API of Java 8

我想用一些包含数量的对象迭代一个数组并获得 totalQuantity,但是使用 Java 8 的新 API 而不是每个循环的典型值。

这是我目前的做法:

int totalQuantityOrdered=0;
    totalQuantityOrdered=CollectionUtils.isNotEmpty(details)?details.stream().forEach(detail->totalQuantityOrdered+=detail.getOrderHeader().getQuantity()):totalQuantityOrdered;

但是我收到一个编译错误,告诉我为了使用 lambda 表达式,变量 totalQuantityOrdered 必须是最终的。然后我想当一个变量是final时意味着它的值不能被修改,那么在那种情况下我该如何实现我想要做的事情?

提前感谢您的宝贵时间。

有一种更简洁的方法可以做到这一点:

int totalQuantityOrdered = 
    details.stream()
           .mapToInt(detail -> detail.getOrderHeader().getQuantity())
           .sum();

这是假设 getOrderHeader().getQuantity() returns 和 int