版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/littleboyandgirl/article/details/73505920
Java语言中,数组对象并不是从某个类实例化出来的,而是JVM动态创建的.对数组对象使用如下操作,可看到数组对应的Class对象.通过RTTI(Run-Time Type Information)可直接检查数组的运行时类型,以及它的签名.下方的 “[L”就是int[]/Integer[] 的运行类型.
Integer[] integers = (Integer[]) Array.newInstance(Integer.class,4);
System.out.println(integers.getClass());
结果:
[Ljava.lang.Integer
Java反射机制使用Array类, java.lang.Class类在运行时获取数组的相关信息.
注意:Array 要和 Arrays区分开,后者是数组工具类.类比于Collections.
数组实例化
方法1: Integer[] integers = new Integer[4]; 方法2: Integer[] integers = {1,2,4,5}; 方法3: 使用反射 Integer[] integers = (Integer[])Array.newInstance(Integer.class,4); 方法4: // componentType是数组类型; Object array = Array.newInstance(componetType,lenght);
通过Array的set(),get()方法可以操作数组.
Array.set(integers,0,2); Array.set(integers,1,4); System.out.println(Array.get(integers,1)); 结果: 4
- 利用反射,可进行如下操作:
代码:
//1-判断是否是数组
boolean isArray = integers.getClass().isArray();
System.out.println(isArray);
//2-直接创建Object数组,通过Array.getLength()获取长度
Object integerArray = Array.newInstance(Integer.class,8);
Array.set(integerArray,0,88);
int length = Array.getLength(integerArray);
int lenght2 = Array.getLength(integers);
System.out.println("integers' length="+lenght2+";\nintegerArray's length="+length);
//3-反射获取数组的对象类型;
Class componenttype = integerArray.getClass().getComponentType();
System.out.println("integerArray's elment's type="+componenttype);
结果: