|
Object[] objs = new Ojbect[3];objs[0=1;
objs[1]=2;
objs[2]=3;
如果将objs强转为Integer[]:
Integer[] intarr = (Integer[])objs;
则会出现:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer异常。
所以要想将object[]转为其它类型数组则可以采用如下泛型函数转换方式:
//转换函数,将object[]转换为需要的数据类型数组
//其实也就是说返回的类型是泛型
//public static 后面的<T>表示返回值定义一个泛型T,然后T[]表示函数返回值的类型是一个数组
//如果<T>后面是T则表示函数返回值的类型是T类型
public static <T> T[] convertObjArr2ClassTArr(Class<T> destType,Object[] srcArr) {
if(destType == null)
return null;
if(srcArr == null)
return null;
T[] arr = null;
try {
arr = (T[])Arrary.newInstance(destType,srcArr.length);
System.arraycopy(srcArr,0,arr,0,srcArr.length);
return arr;
}
catch(Exception e{}
return null;
}
使用代码:
Object objs[] = new Object[3];
objs[0] = 1;
objs[1] = 2;
objs[2] = 3;
//要想使用返回值是泛型的函数,接收类型直接写实际需要的类型即可,不存在强制转换
intarr = convertObjArr2ClassTArr(Integer.class,objs);
System.out.println("------------");
for(Integer i:intarr)
System.out.println(i);
|
|