Java 反射機制中 getMethod()和getDeclaredField()區別

今天在程序中用到java反射機制時,遇到的問題記錄一下:我當時遇到的問題是,我用反射getMethod()調用類方法時,發生 NoSuchMethodException異常,後來上網發現getMethod()調用公共方法,不能反射調用私有方法,後來找到 getDeclaredField()可以訪問本類中定義的全部方法。後來用這個方法解決了我遇到的問題。我查了java api文檔,其中詳細說明以下:
java

Method getDeclaredMethod(String name, Class… parameterTypes)
          返回一個 Method 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明方法。
Method[] getDeclaredMethods()
          返回 Method 對象的一個數組,這些對象反映此 Class 對象表示的類或接口聲明的全部方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法。api


Method getMethod(String name, Class… parameterTypes)
          返回一個 Method 對象,它反映此 Class 對象所表示的類或接口的指定公共成員方法。
Method[] getMethods()
          返回一個包含某些 Method 對象的數組,這些對象反映此 Class 對象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法。數組


getDeclaredField(String name)
          返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段。
Field[] getDeclaredFields()
          返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的全部字段,包括公共、保護、默認(包)訪問和私有字段,但不包括繼承的字段。  對象

相關文章
相關標籤/搜索