我想得到两个图像的区别,其中像素由两个Integer,Float等数组表示。我写了一个通用的方法来做到这一点:
private <T extends Number> T[] pixelsDiff(T[] pxs1,
T[] pxs2, Class<T> clazz) {
if (pxs1.length != pxs2.length)
return null;
T[] diff = (T[]) Array.newInstance(clazz, pxs1.length);
for (int i = 0; i < pxs1.length; i++)
diff[i] = (pxs1[i] - pxs2[i]);
return diff;
}
在
上出现错误diff[i] = (pxs1[i] - pxs2[i]);
读取
The operator - is undefined for the argument type(s) T, T
如果我将此行更改为
diff[i] = (T) (pxs1[i].doubleValue() - pxs2[i].doubleValue());
会出现另一个错误:无法从double转换为T
由于我不能像C ++那样覆盖T的“ - ”运算符,我想知道有没有办法可以返回T []数组而不是double []?