標籤:
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 // NoSuchFieldException40 Field nameField = c.getDeclaredField("name");41 // IllegalAccessException42 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:通過反射擷取成員變數並且使用