有人会写这样的代码:
int[] intArray = (int[]) Array.newInstance(int.class, 3);
Array.set(intArray, 0, 123);
Array.set(intArray, 1, 456);
Array.set(intArray, 2, 789);
System.out.println("intArray[0] = " + Array.get(intArray, 0));
System.out.println("intArray[1] = " + Array.get(intArray, 1));
System.out.println("intArray[2] = " + Array.get(intArray, 2));
我想问为什么我需要修改这样的数组而不是:
intArray [0] = 123;
intArray [1] = 456;
intArray [2] = 789;
答案 0 :(得分:2)
您提供的代码背后没有动力,它可以全部替换为本机数组语法。 Array
类仅对编译时未知组件类型的数组的通用处理有用。
一个简单的例子可能是解析一些有线格式,你可能有一个辅助方法,如:
public Object toArray(Class<?> componentType, int size, Parser p) {
Object array = Array.newInstance(componentType, size);
for (int i = 0; i < size; i++)
Arrays.set(array, i, p.nextItem());
return array;
}
答案 1 :(得分:2)
我想问为什么我需要修改这样的数组......
您通常不需要这样做。如果你不需要,你就不应该!
但是假设您正在编写代码以基于(例如)XML或JSON中的描述创建和初始化任意Java数据结构。在这种情况下,您可以编写反射代码,以更通用的方式执行此类操作......构建数据结构。