标签:
1 package cn.itcast_03; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Field; 5 6 /* 7 * 通过发生获取成员变量并使用 8 */ 9 public class ReflectDemo { 10 public static void main(String[] args) throws Exception { 11 // 获取字节码文件对象 12 Class c = Class.forName("cn.itcast_01.Person"); 13 14 // 获取所有的成员变量 15 // Field[] fields = c.getFields(); 16 // Field[] fields = c.getDeclaredFields(); 17 // for (Field field : fields) { 18 // System.out.println(field); 19 // } 20 21 /* 22 * Person p = new Person(); p.address = "北京"; System.out.println(p); 23 */ 24 25 // 通过无参构造方法创建对象 26 Constructor con = c.getConstructor(); 27 Object obj = con.newInstance(); 28 System.out.println(obj); 29 30 // 获取单个的成员变量 31 // 获取address并对其赋值 32 Field addressField = c.getField("address"); 33 // public void set(Object obj,Object value) 34 // 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 35 addressField.set(obj, "北京"); // 给obj对象的addressField字段设置值为"北京" 36 System.out.println(obj); 37 38 // 获取name并对其赋值 39 // NoSuchFieldException 40 Field nameField = c.getDeclaredField("name"); 41 // IllegalAccessException 42 nameField.setAccessible(true); 43 nameField.set(obj, "林青霞"); 44 System.out.println(obj); 45 46 // 获取age并对其赋值 47 Field ageField = c.getDeclaredField("age"); 48 ageField.setAccessible(true); 49 ageField.set(obj, 27); 50 System.out.println(obj); 51 } 52 }
Android(java)学习笔记:109:通过反射获取成员变量并且使用
标签:
原文地址:http://www.cnblogs.com/hebao0514/p/4565776.html