java泛型问题:约束泛型后,操作泛型数组报错

浅羊 发布于 2021/01/19 14:15
阅读 201
收藏 0

请教一下,我最近在学习泛型时遇到这个问题:

我约束了泛型的类型为Integer,在对泛型数组内的元素进行操作时报错:

java: 不兼容的类型: int无法转换为T.

    public static <T extends Integer> void xorTest(T[] arr, int a, int b) {
        Integer m = arr[a];
        Integer n = arr[b];
        m ^= n;
        arr[a] ^= arr[b]; // 报错java: 不兼容的类型: int无法转换为T
    }

 

加载中
0
MZHS
MZHS

编译器还没那么智能,arr[a]虽然能调用Integer的方法,但是还没有到直接拿着T类型的变量能直接用操作符的地步,这样写就可以了
Integer a1= arr[a];
Integer b1=arr[b];
a1 ^= b1;

浅羊
浅羊
回复 @MZHS : 多谢
MZHS
MZHS
回复 @浅羊 : Integer b1=arr[b]; arr[a]=(T) b1;
浅羊
浅羊
可是我想操作改变数组的元素,这样做不到呀
0
piaoyaoi
piaoyaoi

int又不是继承integer

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部