本文轉自:http://z3sm2012.iteye.com/blog/1933227
今天在程序中用到java反射機制時,遇到的問題記錄一下:我當時遇到的問題是,我用反射getMethod()調用類方法時,發生 NoSuchMethodException異常,后來上網發現getMethod()調用公共方法,不能反射調用私有方法,后來找到 getDeclaredField()能夠訪問本類中定義的所有方法。后來用這個方法解決了我遇到的問題。我查了java api文檔,其中詳細說明如下:
Method getDeclaredMethod(String name, Class… parameterTypes)d
返回一個 Method 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明方法。
Method[] getDeclaredMethods()
返回 Method 對象的一個數組,這些對象反映此 Class 對象表示的類或接口聲明的所有方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法。
Method getMethod(String name, Class… parameterTypes)
返回一個 Method 對象,它反映此 Class 對象所表示的類或接口的指定公共成員方法。
Method[] getMethods()
返回一個包含某些 Method 對象的數組,這些對象反映此 Class 對象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法。
getDeclaredField(String name)
返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段。
Field[] getDeclaredFields()
返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的所有字段,包括公共、保護、默認(包)訪問和私有字段,但不包括繼承的字段。