I would like to generically add numbers in java. I\'m running into difficulty because the Numbers class doesn\'t really support what I want to do. What I\'ve tried so far
In order to calculate a sum generically, you need to provide two actions:
In Java, you do it through an interface. Here is a complete example:
import java.util.*;
interface adder {
T zero(); // Adding zero items
T add(T lhs, T rhs); // Adding two items
}
class CalcSum {
// This is your method; it takes an adder now
public T sumValue(List list, adder adder) {
T total = adder.zero();
for (T n : list){
total = adder.add(total, n);
}
return total;
}
}
public class sum {
public static void main(String[] args) {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(4);
list.add(8);
CalcSum calc = new CalcSum();
// This is how you supply an implementation for integers
// through an anonymous implementation of an interface:
Integer total = calc.sumValue(list, new adder() {
public Integer add(Integer a, Integer b) {
return a+b;
}
public Integer zero() {
return 0;
}
});
System.out.println(total);
}
}