现在的位置: 首页 > 综合 > 正文

在数组中使用反射

2013年09月20日 ⁄ 综合 ⁄ 共 1118字 ⁄ 字号 评论关闭

    假如我们需要一个公共的方法print(Object obj)用来打印对象的信息,如果我们传入的参数obj为数组类型,我们该怎么办呢,下面和大家分享一下:

import java.lang.reflect.Array;

public class TestArrayReflect {
    public static void main(String[] args) {
        String[] arr=new String[]{"aaa","bbb","ccc"};
        String s="123";
        //第一种打印对象信息的方法
        print1(arr);
        print1(s);
        System.out.println("----------------");
        //第二种打印对象信息的方法
        print2(arr);
        System.out.println();
        print2(s);
    }
    /**
     * 打印对象信息的方法1
     * @param obj
     */
    public static void print1(Object obj){
        System.out.println(obj.toString());
    }
    /**
     * 打印对象的信息方法2
     * @param obj
     */
    public static void print2(Object obj){
        Class cls=obj.getClass();
        //如果该对象是数组
        if(cls.isArray()){
            //得到该数组的长度
            int length=Array.getLength(obj);
            //输出数组中每个元素
            for(int i=0;i<length;i++){
                System.out.print(Array.get(obj, i)+"  ");
            }
        }else{
            System.out.println(obj.toString());
        }
    }
}

运行结果如下:

[Ljava.lang.String;@de6ced
123
----------------
aaa  bbb  ccc  
123

从结果中可以看到print1方法打印出的对象信息,什么东东啊,显示不是我们想要的,而使用反射实现的print2方法打印出的对象信息才是我们想要的。

可见虽然反射在实际工作中用的不太多,但是在处理一些特殊问题的时候,还是能发挥神奇作用的。

抱歉!评论已关闭.