Java反射代碼 得到某類的所有字段 getFields()與getDeclaredFields()區別 getMethod()和getDeclaredMethod()區別

**
* 得到某類的所有字段
*
*/
public void reflect2(){
      try {
          Class cls = Class.forName("entity.UserBean");//加載UserBean類到內存中!獲取一個Class對象
          Field[]fields = cls.getDeclaredFields();//通過class取出當前class的所有字段
           for (Field field : fields) { //完全等同於上面的for循環
                  System.out.println(field.getName()+" "+field.getType());
          }
     } catch (Exception e) {
         // TODO Auto-generated catch block
           e.printStackTrace();
     }

}

getFields()獲得某個類的所有的公共(public)的字段,包括父類。 

getDeclaredFields()獲得某個類的所有申明的字段,即包括public、private和proteced,但是不包括父類的申明字段。 

同樣類似的還有getConstructors()和getDeclaredConstructors(),getMethods()和getDeclaredMethods()。


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 對象所表示的類或接口所聲明的所有字段,包括公共、保護、默認(包)訪問和私有字段,但不包括繼承的字段。


* getConstructors()與getDeclaredConstructors()區別:getConstructors()只能訪問類中聲明爲public的構造函數.getDeclaredConstructors()能訪問類中所有的構造函數,與public,private,protect無關
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章