import java.lang.reflect.Array;
import java.util.Date;
public class TestCast {
/**
* @param args
*/
//public static void main(String[] args) {
/** *//**
*
* 一般情况下数组和数组是不能直接进行转换的,例如:
* Object[] t1={"1","2"};
* String[] t2=(String[])t1;//这里会出现转换错误
*
* 下面提供了一种方式进行转换
*/
//1.0测试一般基础类
/* Object[] t1={"1","2","3","4","5"};
String[] m1=(String[])TestCast.cast(t1,String.class);
for(int i=0;i<m1.length;i++)
System.out.println(m1[i]);
//2.0测试复杂对象
Object[] t2={new Date(1000),new Date(2000)};
Date[] m2=(Date[])TestCast.cast(t2,Date.class);
for(int i=0;i<m2.length;i++)
System.out.println(m2[i].toString());*/
// }
/** *//**
* 将数组array转换成clss代表的类型后返回
* @param array 需要转换的数组
* @param clss 要转换成的类型
* @return 转换后的数组
*/
public static Object cast(Object array,Class clss){
if(null==clss)
throw new IllegalArgumentException("argument clss cannot be null");
if(null==array)
throw new IllegalArgumentException("argument array cannot be null");
if(false==array.getClass().isArray())
throw new IllegalArgumentException("argument array must be array");
Object[] src=(Object[])array;
Object[] dest=(Object[])Array.newInstance(clss, src.length);
System.arraycopy(src, 0, dest, 0, src.length);
return dest;
}
}