Array 类提供了动态创建和访问 Java 数组的静态方法。
主要包括:
1、创建数组
2、设置数组元素值
3、获取数组元素值
4、获取数组长度
主要包括:
1、创建数组
2、设置数组元素值
3、获取数组元素值
4、获取数组长度
package reflect;
import java.lang.reflect.Array;
/**
@author zhangquanit
*/
public class ArrayTest {
public static void main(String[] args) {
/*
* Object newInstance(Class<?> componentType, int length)
* 创建数组
*/
String[] array = (String[]) Array.newInstance(String.class, 3);
/*
* void set(Object array, int index, Object value)
* 设置元素
* setByte、setShort、setInt、setLong、setFloat、setDouble、setChar、setBoolean
*/
Array.set(array, 0, "1");//[1, null, null]
/*
* Object get(Object array, int index)
* 获取元素
* getByte、getShort、getInt、getLong、getFloat、getDouble、getChar、getBoolean
*
* 注意:Array支持设值时基本类型的自动装箱和拆箱,但是不支持获取元素时的自动拆箱
* 比如一个int[]数组,可以设置int和Integer元素,但是获取getInt只支持int数组,不支持Integer数组
*/
String value = (String) Array.get(array, 0);
//数组长度
int length = Array.getLength(array);
//自动装箱测试
autoBox();
//关于数组的反射
int[] array1=new int[]{1,2,3};
String[] array2=new String[]{"1","2","3"};
printObj(array1);
printObj(array2);
}
private static void autoBox(){
Integer i=1;
int i2=2;
//int数组可添加int和Integer元素 ,getInt获取元素
int[] intArray = (int[]) Array.newInstance(int.class, 3);
Array.set(intArray, 0,i); //[1, 0, 0]
Array.set(intArray, 1,i2);//[1, 2, 0]
int int1 = Array.getInt(intArray, 0);//1
Object object = Array.get(intArray, 0);//1
//Integer数组可添加int和Integer元素,不支持getInt
Integer[] integerArray=(Integer[]) Array.newInstance(Integer.class, 3);
Array.set(integerArray, 0,i); //[1, 0, 0]
Array.set(integerArray, 1,i2);//[1, 2, 0]
// int1 = Array.getInt(integerArray, 0);//报错
Integer value = (Integer) Array.get(integerArray, 0);//2
}
//数组的反射
public static void printObj(Object array){
Class cla=array.getClass();
if(cla.isArray()){ //如果是数组
int len= Array.getLength(array);
for(int i=0;i<len;i++){
Object value=Array.get(array, i);
}
}else{ //如果只是单个对象
}
}
}