public class Test {
    char c1[] = { 'a', 'b', 'c', 'd' };    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        char[] c2 = { 'a', 'b', 'c' };
        Object obj1 = c2;        Test test = new Test();
        Field[] fields = test.getClass().getDeclaredFields();
        Object obj2 = fields[0].get(test);
    }
}
这个obj1中的值该怎么取呢??同理,obj2的值该怎么取的???我System.out.println(obj2.getClass().isArray());打印出来是true,说明这个数组没问题

解决方案 »

  1.   

    if(obj2.getClass().isArray())
    Object[]  xxx=(Object[])obj1;
    然后遍历
      

  2.   

    import java.lang.reflect.Field;
    import java.util.Arrays;public class Test {
        char c1[] = { 'a', 'b', 'c', 'd' };    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
            char[] c2 = { 'a', 'b', 'c' };
            Object obj1 = c2;
            
            c2 = (char[]) obj1; // Java里数组也是对象
            System.out.println(Arrays.toString(c2));        Test test = new Test();
            Field[] fields = test.getClass().getDeclaredFields();
            Object obj2 = fields[0].get(test);
        }
    }
      

  3.   


    你试过了么??这个数组存的是基本类型。。不要想当然
    Exception in thread "main" java.lang.ClassCastException: [C cannot be cast to [Ljava.lang.Object;
    at renshang.action.util.Test.main(Test.java:12)
      

  4.   

    System.out.print((char[]) obj1);
    System.out.print((char[]) obj2);要转下  不然Object没法读
      

  5.   

    个人觉得笔者这个问题有些牵强,用泛型对于第一个obj1,既然要得到值就直接传个对象就行了;对于第二个obj2,还是可以得到它的值的,因为,obj2中的数据是通过类的初始化来得到的(在obj1中如果char[] c2是成员变量 而且 char[] c2 = { 'a', 'b', 'c' }; 放在它的无参构造函数中,那就也能得到)
                Field[] fields = test.getClass().getDeclaredFields();
         for (Field field : fields) {
            System.out.println(field);
            Test test1 = Test.class.newInstance();
    System.out.println(Arrays.toString((char[])field.get(test1)));

                }
     
      

  6.   

    其实我的想法是这样的    public static void test(Object obj) throws IllegalArgumentException, IllegalAccessException {
            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                // 打印obj的属性及其值
                System.out.println(field.getName() + ":" + field.get(obj));
            }
        }就是数组里的东西得不到
      

  7.   

            char[] c2 = { 'a', 'b', 'c', 'd' };
            Object obj1 = c2;
            for(int i=0;i<Array.getLength(obj1);i++) {
             System.out.println(Array.get(obj1, i));
            }
    不如试试这样