《Java面向对象编程》导读-利用Java反射机制动态创建和访问数组
孙卫琴书友会
IT畅销书作家,Java开发专家
java.lang.Array类提供了动态创建和访问数组元素的各种静态方法:
- newInstance():创建数组对象。
- set():给数组的特定元素赋值。
- get():读取数组的特定元素的值。
例程1的ArrayTest1类的main()方法创建了一个长度为20的字符串数组,接着把索引位置为5的元素设为“hello”,然后再读取索引位置为5的元素的值。
例程1 ArrayTest1.java
import java.lang.reflect.*;
public class ArrayTest1 {
public static void main(String args[])throws Exception {
//创建一个长度为20的字符串数组
Object array = Array.newInstance(String.class, 20);
//把索引位置为5的元素设为"hello"
Array.set(array, 5, "hello");
//读取索引位置为5的元素的值
String s = (String) Array.get(array, 5);
System.out.println(s); //打印hello
//获取数组的元素的类型
Class<?> elementType =
array.getClass().getComponentType();
//打印java.lang.String
System.out.println(elementType.getName());
}
当Class对象表示数组类型,它的getComponentType()方法返回的Class对象表示数组中元素的类型。
例程2的ArrayTest2类的main()方法创建了一个 10X20的double类型的二维数组,并把索引位置为[3][5] 的元素的值设为66.22。
例程2 ArrayTest2.java
import java.lang.reflect.*;
public class ArrayTest2{
public static void main(String args[]) {
int dims[] = new int[]{10, 20};
Object array = Array.newInstance(double.class, dims);
//返回array[3]
Object array3 = Array.get(array, 3);
//把元素array[3][5]设为66.22