如何通过添加减少双属性流?

时间:2017-11-09 19:58:53

标签: javafx properties javafx-8

鉴于我有一个双重属性的流或列表,它们都应该与add操作绑定在一起,在JavaFX中执行此操作的正确方法是什么?

以下不起作用,因为DoubleExpression::add返回DoubleBinding而不是DoubleProperty

DoubleBinding value = doubleProperties.stream()
    .reduce(doubleProperty, doubleProperty2) -> doubleProperty.add(doubleProperty2)).get();

DoubleBinding value = doubleProperties.stream()
    .reduce(DoubleExpression::add).get();

以下作品,但我认为不应该是必要的黑客:

DoubleBinding value = doubleProperties.stream()
                .map(doubleProperty -> doubleProperty.add(0))
                .reduce(DoubleExpression::add)
                .get();

1 个答案:

答案 0 :(得分:0)

对我来说最有用的解决方案是使用DoubleExpression而不是DoubleProperty或DoubleBinding。

DoubleExpression value = doubleProperties.stream()
                .map(DoubleProperty::doubleExpression)
                .reduce(DoubleExpression::add)
                .get();

我实际上并不了解这三个类之间的细微差别。 如果有人知道这个结构是否符合我的预期以及不同之处,请随时发表评论或回答。