關于Field對象的問題
背景:不考慮訪問控制權限問題,默認public
代碼:
Field?f?=?e.getClass().getField("p_int"); //?f是一個Field對象,即實例域對象 Object?v?=?f.get(e); //?f.get(e)?查看API文檔,即返回對象參數中名為f的值 System.out.println(v); //?這里v是一個int,通過自動裝箱最后再輸出。
問題:這里通過反射查看e中的"p_int"域的值,不太理解的是,按照我這種低端選手的思維,e對象中名為f的域的值,寫法應該是"v.get(f)",雖然我非常清楚v沒有get這個函數,也非常清楚按照API"f.get(v)",才是正確的用法,但是還是非常的難以理解,求解答
2017-08-30
反射的思想就是用Field對象來代理e這個對象來操作,也就是e對象只是Field對象的一個傳進來的參數
所以用f.get(e); 如果 直接e.get(v)那就是直接操作e對象,就不是反射了