动态创建数组的步骤如下:
1.创建Class对象,通过forName(String)方法指定数组元素的类型
2.调用Array.newInstance(Class, length_of_array)动态创建数组
3.动态数组Array可以转化为普通的数组
public static void main(String args[]) throws Exception {
Class<?> classType = Class.forName("java.lang.String");
// 创建一个长度为10的字符串数组
Object[] array = (Object[]) Array.newInstance(classType, 10);
// 把索引位置为5的元素设为"hello"
Array.set(array, 5, "hello");
// 获得索引位置为5的元素的值
System.out.println(array[0]);
String s = (String) Array.get(array, 5);
System.out.println(s);
}
List 反射创建数组:
// 通过list的toArray并使用反射创建结果数组
T[] result = list.toArray((T[]) Array.newInstance(clazz, list.size()));
// 通过反射创建数组
// T[] result = (T[]) Array.newInstance(clazz, list.size());
自己用写方法实现:
public static Object listToArray(List<?> list, Class<?> clazz) {
if (list == null) {
return null;
}
int len = list.size();
Object array = Array.newInstance(clazz, len);
for (int i = 0; i < len; i++) {
Array.set(array, i, list.get(i));
}
return array;
}