Java中关于数组的反射

Java中关于数组的反射:

1.准备知识:首先要知道数组是一种类型,根据定义当两个数组具有相同的类型和相同的维度时则这两个数组是同一种类型。

<pre name="code" class="html">int[] a=new int[3];
		int[] a4=new int[5];
		String[] a3=new String[]{"hello","jdfsa"};
		System.out.println(a.getClass()==a4.getClass());
		System.out.println(a.getClass().getSuperclass());
		System.out.println(a3.getClass().getSuperclass());


 其结果为:true 

   class java.lang.Object
   class java.lang.Object

从结果可知数组的类型具有相同的父类Object,如下代码

                int[] a=new int[3];
		int[] a4=new int[5];
		String[] a3=new String[]{"hello","jdfsa"};
		int[][] a1=new int[][]{{1,3},{5,9,10}};
		
		Object o1=a;//正确
		Object o2=a1;//正确
	//	Object[] o3=a;//错误
		Object[] o4=a1;//正确
		
2.数组的反射工具类Array(来自java.lang.refect包)主要的使用方法为:

1.get(Object obj,int index)得到某个对象对应索引位置的数据

  getxxx(Object obj,int index)得到obj对象中具体的数据

2.getLength()动态返回数组的长度

3.set(Object obj,int index)设置obj对象中的具体索引位置的值

  setxxxx(Object obj,int index)设置obj对象中某个索引具体的值

4.newInstance(Class<?> calzz,int lenghh/int demesion)动态的创建具体类型和维度或具体类型和长度的数组

下面的例子是根据object对象的不同来打印数据

private static void printData(Object obj) {
		Class clazz=obj.getClass();
		if(clazz.isArray())
		{
			int len=Array.getLength(obj);
			for(int i=0;i<len;i++)
				sop(Array.get(obj, i));
		}
		else
		{
			sop(obj);
		}
		
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值