java中如何實現private反射獲得對象字段值的

背景介紹:在一個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
發佈了44 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章