0
点赞
收藏
分享

微信扫一扫

Java反射 - 创建数组实例


对于创建非数组实例,可以看这篇文章 : ​​Java反射 - [实例演示] 创建类的对象多种方式​​

一、Java.lang.reflect.Array ’ API

  1. ​public static Object newInstance(Class<?> componentType, int length)​

创建具有指定组件类型和长度的新数组

其中,第一个参数与Class类中的​​​getComponentType()方法​​​结合使用。这个方法​​返回数组的成员类型,如果此类成员类型不是数组,则返回null​

  1. ​public static Object get(Object array, int index)​

返回指定数组对象中索引的值。若该对象的值是基本数据类型,则将改制自动装箱

  1. ​public static int getLength(Object array)​

返回指定数组的长度

  1. ​public static void set(Object array, int index, Object value)​

将指定数组对象的索引组件的值设置为指定的新值。 如果数组的值是基本数据类型,则新值将首先被自动拆箱

二、创建数组实例

public class ReflectTest{
public static void main(String[] args) {
String[] strArr = (String[]) Array.newInstance(String[].class.getComponentType(), 10);
System.out.println(Arrays.toString(strArr));
}
}

输出 :
[null, null, null, null, null, null, null, null, null, null]

多维数组的创建以及赋值

三、实例分析

  1. 通过Array.newInstance方法创建的实例,默认返回Object类型。因为所有类的父类都是Object,所以数组也是Object类型。可以通过强制转换来得到真正想要的类型。
  2. ​int i = (int) Array.get(intArr, 3);​​​经过反编译后为​​int i = (Integer)Array.get(intArr, 3);​

举报

相关推荐

0 条评论