【发布时间】:2015-11-18 01:12:48
【问题描述】:
我有一个方法可以返回多个模型对象的属性平均值:
List<Activity> activities = ...;
double effortSum = 0;
double effortCount = 0;
activities.stream().forEach(a -> {
double effort = a.getEffort();
if (effort != Activity.NULL) {
effortCount++; < Compilation error, local variable
effortSum += effort; < Compilation error, local variable
}
});
但是,如上所述,上述尝试无法编译。我想到的唯一解决方案是使用AtomicReference 到Double 对象,但这看起来很笨拙,并且给应该简单的操作增加了大量的混乱。 (或者加番石榴,获得AtomicDouble,但得出同样的结论。)
是否有使用新的 Java 8 循环修改局部变量的“最佳实践”策略?
Activity的相关代码:
public class Activity {
public static final double NULL = Double.MIN_VALUE;
private double effort = NULL;
public void setEffort(double effort) { this.effort = effort; }
public double getEffort() { return this.effort; }
...
}
【问题讨论】:
-
您能否在您的 OP 中包含
activities的声明? -
当然,我添加了相关位。