A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志兵 中级黑马   /  2012-6-10 20:48  /  927 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志兵 于 2012-6-10 20:50 编辑

给定一道题目,要求打印一个object对象(教程里面是这样的例子),我们会认为这很简单啊,直接System.out.println(obj);就行了,是吧,这太简单了吧。

但是如果出现这样的object对象呢  String[] str = new String[]{"a","b","c"};

这个str是一个数组,它也是一个object对象,你如果直接打印的话那打印出来的只能是这个总体的对象,

例如 [Ljava.lang.String;@61de33,那怎么才能够把里面的所有对象打印出来呢、

这里就需要用到数组的反射了。


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


public class ReflectLoadMain {
public static void main(String[] args) throws Exception {
  String[] a4 = new String[]{"a","b","c"};
   
  System.out.println(Arrays.asList(a4));
  
  printObject(a4);
  printObject("xyx");
  
}

private static void printObject(Object obj) {
  // TODO Auto-generated method stub
  Class cls = obj.getClass();
  if (cls.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);
  }
}
}

这样就能够将object中的数组内容全部打印出来

数组反射,就是这样滴。。。。。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马