2つの注文された番号のコレクションを取得したとします。要素ごとに算術差を計算したいと思います。「番号の順序付けられたコレクション」の概念をモデル化するには、番号のリストを使用する必要があると思います。問題は、算術の差(3-2のような平凡な'-')がNumberに対して定義されていないことです。すべてを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;
}
何か案が?