Array

Array 类提供了动态创建和访问 Java 数组的静态方法。 
主要包括:
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{ //如果只是单个对象
		 
	 }
 }

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值