ITEEDU

Java Gossip: 生成数组

要使用反射机制动态加载类别并生成数组的话,可以使用java.lang.reflect.Array来协助,下 面这个例子简单的示范了如何生成String数组:

NewArrayDemo.java
package onlyfun.caterpillar;
import java.lang.reflect.Array;
public class NewArrayDemo {
	public static void main(String[] args) {
		Class c = String.class;
		Object objArr = Array.newInstance(c, 5);
		for(int i = 0; i < 5; i++) {
			Array.set(objArr, i, i+"");
		}
		for(int i = 0; i < 5; i++) {
			System.out.println(Array.get(objArr, i));
		}
	}
}


执行结果:

0
1
2
3
4

二维以上数组的话,可以透过一个int数组来宣告其维度,例如下面这个程序示范如何设定与取得二维数组的值:

NewArrayDemo.java
package onlyfun.caterpillar;
import java.lang.reflect.Array;
public class NewArrayDemo {
	public static void main(String[] args) {
		Class c = String.class;
		int[] dim = new int[]{3, 4};
		Object objArr = Array.newInstance(c, dim);
		for(int i = 0; i < 3; i++) {
			Object row = Array.get(objArr, i);
			for(int j = 0; j < 4; j++) {
				Array.set(row, j, "" + (i+1)*(j+1));
			}
		}
		for(int i = 0; i < 3; i++) {
			Object row = Array.get(objArr, i);
			for(int j = 0; j < 4; j++) {
				System.out.print(Array.get(row, j) + " ");
			}
			System.out.println();
		}
	}
}

执行结果:

1 2 3 4 
2 4 6 8 
3 6 9 12?