java.lang.reflect包的Array类提供了静态方法来动态创建和访问Java数组。数组允许在get或set操作期间发生扩展转换,但是如果将发生缩小转换,则抛出IllegalArgumentException。
此类提供newInstance()方法,getter方法和setter方法。newInstance()方法接受一个名为Class的类的对象,该对象表示所需的组件,一个整数表示数组的长度,创建并返回具有给定规格的数组。
import java.lang.reflect.Array; import java.util.Arrays; public class Reflection_ArrayExample { public static void main(String args[]){ Integer [] intArray = (Integer[]) Array.newInstance(Integer.class, 5); intArray[0] = 2001; intArray[1] = 12447; intArray[2] = 6358; intArray[3] = 902; intArray[4] = 6654; System.out.println(Arrays.toString(intArray)); } }
输出结果
[2001, 12447, 6358, 902, 6654]
此类的getter方法getLong(),getInteger(),getLong()等接受对象形式的数组和表示索引的整数,并以指定的索引返回给定数组的元素。
此类的setter方法setLong(),setInteger(),setLong()等接受对象形式的数组,表示索引的整数和相应数据类型的值,并在指定的索引处设置给定值。
import java.lang.reflect.Array; import java.util.Arrays; public class Reflection_ArrayExample { public static void main(String args[]){ int [] intArray = (int[]) Array.newInstance(int.class, 5); intArray[0] = 2001; intArray[1] = 12447; intArray[2] = 6358; intArray[3] = 902; intArray[4] = 6654; Array.setInt(intArray, 1, 1111); Array.setInt(intArray, 3, 3333); Array.setInt(intArray, 4, 4444); System.out.println(Arrays.toString(intArray)); System.out.println(Array.getInt(intArray, 1)); System.out.println(Array.getInt(intArray, 3)); System.out.println(Array.getInt(intArray, 4)); } }
输出结果
[2001, 1111, 6358, 3333, 4444] 1111 3333 4444