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,说明这个数组没问题
Object[] xxx=(Object[])obj1;
然后遍历
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);
}
}
你试过了么??这个数组存的是基本类型。。不要想当然
Exception in thread "main" java.lang.ClassCastException: [C cannot be cast to [Ljava.lang.Object;
at renshang.action.util.Test.main(Test.java:12)
System.out.print((char[]) obj2);要转下 不然Object没法读
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)));
}
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
// 打印obj的属性及其值
System.out.println(field.getName() + ":" + field.get(obj));
}
}就是数组里的东西得不到
Object obj1 = c2;
for(int i=0;i<Array.getLength(obj1);i++) {
System.out.println(Array.get(obj1, i));
}
不如试试这样