背景介紹:在一個Bean類中,需要通過反射機制獲得private字段屬性時,如果用通常獲得步驟獲得會報如下錯誤: java.lang.IllegalAccessException: Class Test can not access a member of class Bean with modifiers "private" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) at java.lang.reflect.Field.doSecurityCheck(Field.java:811) at java.lang.reflect.Field.getFieldAccessor(Field.java:758) at java.lang.reflect.Field.get(Field.java:228) 解決如下代碼 實現代碼: 1.Bean.class內容如下: public class Bean { private String aa; } 2.Test.class內容如下: public class Test { public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Bean test = new Bean(); Field f = Bean.class.getDeclaredField("aa"); //其中,最关键的代码是: //f.setAccessible(true); //这行代码把对象data上的name字段设置为public访问属性. f.setAccessible(true); System.out.println(f.get(test)); f.set(test, "t2"); System.out.println(f.get(test)); } } 運行Test類輸出如下: null t2
java中如何實現private反射獲得對象字段值的
最新推荐文章于 2024-11-03 11:01:20 发布