Java 8中的操作员的便捷功能?

时间:2015-02-03 19:00:04

标签: java functional-programming java-8

在Python中,如果我想对xor操作进行折叠,我可以写:

reduce(operator.xor, my_things, 0)

而不是更麻烦的

reduce(lambda x, y: x^y, my_things, 0)

新的Java 8功能特性中是否有类似的内容?例如写这样的东西

myThings.reduce(0, Integer::xor)

而不是

myThings.reduce(0, (x, y) -> x ^ y)

2 个答案:

答案 0 :(得分:3)

我们在私有Integer#sum(int, int)包中建议您使用IntPipeline,但其他数字运算符没有类似的方法。

@Override
public final int sum() {
    return reduce(0, Integer::sum);
}

您可以自己定义它们。

答案 1 :(得分:0)

是的,您可以在任何静态或实例方法上使用::方法引用运算符来代替功能接口(lambda)。我不认为Integer有一个。