Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8流-对象的总和_Java_Java 8_Java Stream - Fatal编程技术网

Java8流-对象的总和

Java8流-对象的总和,java,java-8,java-stream,Java,Java 8,Java Stream,假设我有一个实现以下接口的对象列表: public interface Summable<T> { T add(T o1); } 公共接口可求和{ T加(to1); } 假设我还有一个类,它可以对这些对象求和: public class Calculator<T extends Summable<T>> { public T sum(final List<T> objects) { if (null == obj

假设我有一个实现以下接口的对象列表:

public interface Summable<T> {
    T add(T o1);
}
公共接口可求和{
T加(to1);
}
假设我还有一个类,它可以对这些对象求和:

public class Calculator<T extends Summable<T>> {
    public T sum(final List<T> objects) {
        if (null == objects) {
            throw new IllegalArgumentException("Ups, list of objects cannot be null!");
        }
        T resultObject = null;
        for (T object : objects) {
            resultObject = object.add(resultObject);
        }
        return resultObject;
   }
}
公共类计算器{
公共T总和(最终列表对象){
if(null==对象){
抛出新的IllegalArgumentException(“Ups,对象列表不能为null!”);
}
T resultObject=null;
对于(T对象:对象){
resultObject=object.add(resultObject);
}
返回结果对象;
}
}
如何使用Java8流实现同样的功能

我正在玩一个定制的收集器,但找不到一个简洁的解决方案。

您拥有的是:


它看起来应该是
公共接口可求和的
不一定,Calculator有它,我想这就足够了。与问题没有直接关系,但在您的示例中,
resultObject
将始终为空。仅在第一次迭代中,但有什么意义?你知道我怎么写吗?
return objects.stream().reduce(T::add).orElse(null);
list.stream().reduce(Summable::add);

interface Summable {
    Summable add(Summable o1);
}