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