黑马程序员技术交流社区

标题: 数组的反射应用 [打印本页]

作者: 唐志兵    时间: 2012-6-10 20:48
标题: 数组的反射应用
本帖最后由 唐志兵 于 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中的数组内容全部打印出来

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2