数组与Object的关系及其反射类型

数组与Object的关系及其反射类型。

具有相同类型和同一维数的数组属于同一类型,即具有相同的Class实例对象。int[]的父类型 是Object,基本数据类型的一维数组可以当作Object来使用,不能当作Object[]来使用,非基本数据类型的一维数组可以当作 Object来使用,也可以当作 Object[]来使用。

    int[] a2=new int[4];
    int[][] a3=new int[2][3];
    String[] a4=new String[]{"a","b","c"};
    System.out.println(a1.getClass() == a2.getClass());//true
//    System.out.println(a1.getClass() == a3.getClass());
    //得到int[]的父类类型。
    System.out.println(a1.getClass().getSuperclass().getName());//Object
    System.out.println(a3.getClass().getSuperclass().getName());//Object
    Object aObj1=a1;
    Object aObj2=a3;
    Object aObj3=a4;
//    Object[] aObj4=a1;编译不通过。
    Object[] aObj5=a3;
    Object[] aObj6=a4;
    
//   Arrays.asList()方法处理int[]和String[]的区别:
    System.out.println(Arrays.asList(a1));//[[I@61de33],jdk1.4的语法,封包.
    System.out.println(Arrays.asList(a4));//[a, b, c],jdk1.5的语法,可变参数.</span>

//数组的反射应用。
 //需求:定义一个打印对象的方法。
<span style="font-size:18px;">private static void printObject(Object obj) {
		/*
		 * Array 类提供了动态创建和访问 Java 数组的方法。 
                   Array 允许在执行 get 或 set 操作期间进行扩展转换,但如果发生收缩转换,
                    则抛出 IllegalArgumentException。

		 */
		Class clazz=obj.getClass();
		if(clazz.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);
		}
		
		
		
	}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值