Java反射----数组操作
1,获取数组字段
在Person类中定义了一个一维数组字段:int[] a1 = new int[]{1,2,3};
如何通过反射技术来操作该字段?
补充:Java操作数组主要用的是Array类。
@Test public void reflectDemo3_2() throws Exception{ //Person p = new Person(); Class clazz = Class.forName("edu.whut.reflect.Person"); Field f = clazz.getField("a1");//f仅仅是字段对象,通过对象的方法获取值 Object value = f.get(clazz.newInstance());//数组的父类都是Object Class type = f.getType(); if(type == int[].class){ System.out.println(value); int len = Array.getLength(value); int num = Array.getInt(value, 0); System.out.println(len+","+num); } }
2,判断数组、接口、枚举类型
1 //需求:打印对象的值 2 //分析:如果是普通对象可直接打印,如果是数组必须要先判断。 3 // 对数组的判断就使用到了反射技术,字节码的方法:Class.isArray(); 4 // 对接口,枚举的判断也用该方法。 5 public static void printObject(Object obj) { 6 Class cls = obj.getClass(); 7 if(cls.isArray()){ 8 int len = Array.getLength(obj); 9 int num = Array.getInt(obj, 0); 10 System.out.println(len+","+num); 11 } 12 else 13 System.out.println(obj); 14 }