《黑马程序员》java 数组反射

数组同样可以当做基本类型来看待。可以通过反射来操作数组

import java.lang.reflect.Array;
import java.util.Arrays;

public class Test4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] i1 = new int[] { 1, 2, 3 };
		int[] i2 = new int[] { 4, 5, 7, 8, 6, };
		int[][] ii3 = new int[2][];
		String[] s = new String[]{"ddd", "ss", "457" };
		System.out.println(i1.getClass() == i2.getClass());//只要数组里面的类型相同则他们的数组类型是相同的同一个class文件
		System.out.println(s.getClass());
		System.out.println(i1.getClass());
		System.out.println(ii3.getClass());
		System.out.println(i1.getClass().getSuperclass());
		System.out.println(ii3.getClass().getSuperclass());
		System.out.println(s.getClass().getSuperclass());
		
//		Object[] obj1=i1;
//		int[] obj2=i2;
//		System.out.println(Arrays.asList(obj1));
//		System.out.println(Arrays.asList(obj2));
		/**
		 * 以上要报错啦说什么不能从int[]转化为Object[]数组因为int是基本数据类型不属于Object,而String就不同了,?
		 * String不是基本数据类型,是与其他对象一样继承自Object
		 */
		Object[] obj3=ii3;
		Object[] obj4=s;
		System.out.println("下面:");
		System.out.println(Arrays.asList(obj3));
		System.out.println(Arrays.asList(obj4));
		System.out.println("array数组");
		printlnObj(i1);//测试java.lang.reflect.Array数组
	}
	 /**
	  * 下面使用了反射里面的Array数组
	  * @param obj
	  */
	public static void printlnObj(Object obj){
		Class class1=obj.getClass();
		if(class1.isArray()){
			int len=Array.getLength(obj);
			for(int i=0;i<len;i++){
				System.out.println(Array.get(obj, i));
			}
		}else{
			System.out.println(obj);
		}
	}
}

总结:Array其实就是好似数组的字节码。通过字节码来操作数组的方法。和直接得到字节码,随后操作相应的类方法一样。

注意:基本类型不是Object,例如int[ ]数组不是Object数组。基本类型不是Object。不过数组类型是Object的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值