package de.invesdwin.util.math.decimal.stream; import javax.annotation.concurrent.NotThreadSafe; import de.invesdwin.util.math.decimal.ADecimal; import de.invesdwin.util.math.decimal.Decimal; @NotThreadSafe public class DecimalStreamSum<E extends ADecimal<E>> implements IDecimalStreamAlgorithm<E, Void> { private double sum = 0; private final E converter; public DecimalStreamSum(final E converter) { this.converter = converter; } @Override public Void process(final E value) { if (value != null) { sum += value.getDefaultValue().doubleValueRaw(); } return null; } public E getSum() { return converter.fromDefaultValue(new Decimal(sum)); } }