關于反射的問題
?Object fieldValue = null;
???try {
????Method getMethod = c.getMethod(getMethodName);
????fieldValue = getMethod.invoke(f);
???} catch (Exception e) {
????e.printStackTrace();
這一段代碼不是很懂,只知道與反射有關
?Object fieldValue = null;
???try {
????Method getMethod = c.getMethod(getMethodName);
????fieldValue = getMethod.invoke(f);
???} catch (Exception e) {
????e.printStackTrace();
這一段代碼不是很懂,只知道與反射有關
2016-02-26
舉報
2016-05-30
其實,這段代碼要做的就是,根據(jù)屬性名稱獲取對象的屬性值。就是你知道了對象的屬性名,但是要獲取這個對象的值。
所以,你直接調用對象的get方法就可以得到對象的屬性值。但是因為屬性名稱是個變量,所以這時候就要通過反射來實現(xiàn)了,具體怎么實現(xiàn)呢?
1:根據(jù)屬性名稱,構造屬性方法名。比如屬性名是namecode他的get方法就是getNamecode(){......},所以方法名就是getNamecode,
2:根據(jù)方法的名稱,獲取這個方法對象Method getMethod = c.getMethod(getMethodName);
3:這個方法的方法對象你獲得了,就可以執(zhí)行這個方法了,具體它要調用一個invoke的方法,具體invoke做了什么你可以去看源碼,也可以自己了解,我可以告訴你,這句代碼:fieldValue = getMethod.invoke(f);
它相當于是f對象調用它的獲取這個屬性的屬性值的get方法。就是執(zhí)行你第2部獲取到的那個方法。
這時候,就得到了這個對象的已知屬性名稱的屬性值。
2016-02-27
方法反射到類從而拿到方法中的值