少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(22)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          在類中尋找指定的方法,同時獲取該方法的參數列表,例外和返回值

          package com.abin.lee.reflect;

          import java.lang.reflect.Method;

          public class method1 {
           private int f1(Object p,int x) throws NullPointerException{
            if(p==null)
             throw new NullPointerException();
            return x;
           }
           public static void main(String[] args) {
            try {
             Class cls=Class.forName("com.abin.lee.reflect.method1");
             Method[] method=cls.getDeclaredMethods();
             for(int i=0;i<method.length;i++){
              Method m=method[i];
              System.out.println("name="+m.getName());
              System.out.println("decl class="+m.getDeclaringClass());
              Class pvec[]=m.getParameterTypes();
              for(int j=0;j<pvec.length;j++)
               System.out.println("param#"+j+" "+pvec[j]);
              Class evec[]=m.getExceptionTypes();
              for(int k=0;k<evec.length;k++)
               System.out.println("evec="+evec[k]);
              System.out.println("return type="+m.getReturnType());
             }
             
             
            } catch (Exception e) {
             e.printStackTrace();
            }
           }
           

          }






          獲取類的構造函數信息,基本上與獲取方法的方式相同

          package com.abin.lee.reflect;

          import java.lang.reflect.Constructor;

          public class constructor1 {
           public constructor1(){}
           public constructor1(int i,double d){}
           public static void main(String[] args) {
            try {
             Class<?> con=constructor1.class;
             Constructor cs[]=con.getConstructors();
             for(int i=0;i<cs.length;i++){
              Constructor ct=cs[i];
              System.out.println("name="+ct.getName());
              System.out.println("decl class="+ct.getDeclaringClass());
              Class pvec[]=ct.getParameterTypes();
              for(int j=0;j<pvec.length;j++){
               System.out.println("param="+pvec[j]);
              }
              Class excp[]=ct.getExceptionTypes();
              for(int j=0;j<excp.length;j++){
               System.out.println("exception="+excp[j]);
              }
              
              
             }
            } catch (Exception e) {
             e.printStackTrace();
            }
           }
          }







          獲取類中的各個數據成員對象,包括名稱。類型和訪問修飾符號:

          package com.abin.lee.reflect;

          import java.lang.reflect.Field;

          public class FieldTest {
           private double d;
           public static final int i=37;
           String s="testing";
           public static void main(String[] args) {
            Class<?> cls=FieldTest.class;
            Field field[]=cls.getDeclaredFields();
            for(int i=0;i<field.length;i++){
             Field fd=field[i];
             System.out.println("name="+fd.getName());
             System.out.println("class="+fd.getDeclaringClass());
             System.out.println("type="+fd.getType());
             int mod=fd.getModifiers();
             System.out.println("modifiers="+java.lang.reflect.Modifier.toString(mod));
             
            }
            
            
            
           }
          }


          posted on 2012-04-15 00:25 abin 閱讀(744) 評論(1)  編輯  收藏 所屬分類: Java反射機制

          Feedback

          # re: Java 反射機制(三)[未登錄] 2015-10-28 17:39 Tony
          給你一個類User ,里面有倆個私有屬性,name,int age,但是沒有set get方法, 反射生成對象,同時給兩個屬性值("abin",20) 賦值給這兩個屬性。不知道看懂沒?求樓主大嬸給我解答一下,小弟菜鳥。多謝!  回復  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 玛沁县| 灵璧县| 六盘水市| 南岸区| 布拖县| 农安县| 安丘市| 通渭县| 梁河县| 临西县| 合水县| 治多县| 新和县| 麟游县| 茂名市| 武冈市| 诏安县| 时尚| 贡嘎县| 湖北省| 定安县| 新晃| 安宁市| 交城县| 濮阳市| 芒康县| 启东市| 隆子县| 巴林右旗| 微山县| 云龙县| 娱乐| 青田县| 广安市| 万宁市| 保山市| 那曲县| 阳东县| 怀集县| 靖安县| 光泽县|