假设我们有 2 个有序的数字集合。我们要逐个元素地计算算术差异。我认为我们需要使用数字列表来模拟“有序数字集合”的概念。问题是没有为 Number 定义算术差异(如 3-2 中的平庸的“-”)。我可以将所有内容都转换为 Double,但我更喜欢干净的解决方案。
public static <E extends Number> List<E> listDifferenceElementByElement(List<E> minuend, List<E> subtrahend) throws Exception {
if (minuend.size() != subtrahend.size()) {
throw new Exception("Collections must have the same size"); //TODO: better exception handling
}
List<E> difference = new ArrayList<E>();
int i = 0;
for (E currMinuend : minuend) {
difference.add(currMinuend-subtrahend.get(i)); //error: The operator - is undefined for the argument type(s) E, E
i++;
}
return difference;
}
任何想法?