package com.sxt.field; /* * 通過反射拿到屬性值 * 修改public屬性值 * 修改private屬性值 * 缺點:可讀性差;代碼復雜 * 優點:靈活;可以訪問修改private屬性值 * 以后多運用setXxx getXxx 修改屬性的值 */ import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class TestField { public static void main(String[] args) throws Exception { //設置私有屬性值 Class<?> class1 = Class.forName("com.sxt.entity.Student"); //創建對象 Object obj = class1.newInstance(); Field[] fields = class1.getDeclaredFields(); //遍歷所有屬性 for(Field f : fields){ System.out.println(f.getName()+"\t"+Modifier.toString(f.getModifiers())); } System.out.println("----------------------------------"); //修改public的score的屬性值 Field field1 = class1.getDeclaredField("score"); //直接通過方法(基本數據類型) field1.setDouble(obj, 99.9); double d = field1.getDouble(obj); System.out.println(d); System.out.println("----------------------------------"); //拿到private的name的屬性值 Field field2 = class1.getDeclaredField("name"); System.out.println(field2.getName() +" "+ Modifier.toString(field2.getModifiers())); //可以改變私有屬性值 field2.setAccessible(true); field2.set(obj, "小明"); Object object = field2.get(obj); System.out.println(object); } }
