Скажем, у меня есть список объектов, реализующих интерфейс ниже:
public interface Summable<T> {
T add(T o1);
}
Скажем, у меня есть также класс, способный суммировать эти объекты:
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;
}
}
Как я могу достичь того же, используя потоки Java 8?
Я играю вокруг пользовательского коллектора, но не могу понять какое-то опрятное решение.