Java Generic:运算符 - 未定义参数类型T,T

时间:2017-12-15 10:50:59

标签: java generics

我想得到两个图像的区别,其中像素由两个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 []?

0 个答案:

没有答案