<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    泰仔在線

    java學習,心情日記,繽紛時刻
    posts - 100, comments - 34, trackbacks - 0, articles - 0

    Java中反射的使用

    Posted on 2006-09-05 14:13 泰仔在線 閱讀(1357) 評論(0)  編輯  收藏 所屬分類: Java 相關

    所用方法:

    1 java.lang.Class.getMethod(String name, Class... parameterTypes) throws NoSuchMethodException, SecurityException

           String name ——待反射的目標方法

           Class... parameterTypes ——待反射的目標方法的參數類型的列表

    2 java.lang.reflect.Method.invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException

           Object obj ——待調用反射方法的宿主對象

           Object... args ——傳入待調用反射方法參數的列表

    使用說明:

    待反射類 PersonService.java (其中有兩個同名方法)

    /**

     * 
    @author  kxx129

     * 
    @version  1.0.0 2006-7-24

     * 
    @since  

     * 

     
    */


    public   class  PersonService  {

           

           
    public  String PersonTest(Person person)  {

                  person.setName(person.getName() 
    +   " has been detected! " );

                  
    return  person.getName()  +  person.getRole();

           }


           

           
    public  String PersonTest(Person person, Person person2)  {

                  person.setName(person.getName() 
    +   " has been detected! " );

                  
    return  person.getName()  +  person2.getName();

           }


     

    }

    調用實例

    》》調用目標為了調用 obj 對象的 methodName 方法,這兩個值一般作為參數傳入

    Object obj  =   new  PersonService();

    String methodName
    = " PersonTest " ; /* 一般反射時這個obj和methodName是不知道的,這里這樣直接聲名純粹為了簡化,方便實現 */

    java.lang.reflect.Method m;

    Class[] cls 
    =   {Person. class , Person. class } ;

    Object[] arg 
    =   {person2, person } ;

    try   {

                         m 
    =  obj.getClass().getMethod(methodName, cls);

    /*                   System.out.println(m.getName());

                         System.out.println(m.getReturnType().getName().toUpperCase());

                         for (int i = 0; i<m.getGenericParameterTypes().length; i++){

                                System.out.println(m.getGenericParameterTypes()[i].toString());

                         }
    */


                         System.out.println(String.valueOf(m.invoke(obj, arg)));

                  }
      catch  (SecurityException e)  {

                         
    //  TODO Auto-generated catch block

                         e.printStackTrace();

                  }
      catch  (NoSuchMethodException e)  {

                         
    //  TODO Auto-generated catch block

                         e.printStackTrace();

                  }
      catch  (IllegalArgumentException e)  {

                         
    //  TODO Auto-generated catch block

                         e.printStackTrace();

                  }
      catch  (IllegalAccessException e)  {

                         
    //  TODO Auto-generated catch block

                         e.printStackTrace();

                  }
      catch  (InvocationTargetException e)  {

                         
    //  TODO Auto-generated catch block

                         e.printStackTrace();

                  }

    代碼說明:

    在實例中待調用方法的參數類型列表,參數列表如下

    Class[] cls = {Person.class, Person.class};

    Object[] arg = {person2, person };

    所以是調用的 PersonService 類的 public String PersonTest(Person person, Person person2) 方法,如果這里換成

    Class[] cls = {Person.class };

    Object[] arg = { person };

    則會調用 public String PersonTest(Person person) 方法。

    當然如果參數類型列表換成 Class[] cls = {String.class };

    則必然在 getMethod(methodName, cls) 處拋出 NoSuchMethodException

    如果參數類型與參數不對應:

    Class[] cls = {Person.class };

    Object[] arg = { String };

    則也必然在 invoke(obj, arg) 處拋出 IllegalArgumentException

    主站蜘蛛池模板: AV大片在线无码永久免费| 免费人成在线观看视频播放| 亚洲人成小说网站色| 日韩激情淫片免费看| caoporm超免费公开视频| 在线观看亚洲一区二区| 德国女人一级毛片免费| 黄床大片免费30分钟国产精品| 亚洲黄色片在线观看| 免费a级毛片永久免费| 人人玩人人添人人澡免费| 亚洲熟女乱色一区二区三区| 久久亚洲国产成人精品无码区| 最近中文字幕无免费| 国产精品观看在线亚洲人成网| 亚洲成AV人片在线播放无码| 在线中文高清资源免费观看| 国产无遮挡裸体免费视频在线观看 | 成人免费毛片观看| 精品无码一级毛片免费视频观看| 色老板亚洲视频免在线观| 亚洲综合无码AV一区二区| 无码国产精品一区二区免费式直播 | 国产AV无码专区亚洲Av| 国产精品va无码免费麻豆| 91香蕉在线观看免费高清| 日韩精品视频在线观看免费| 亚洲午夜在线一区| 亚洲国产精品无码av| 国产免费变态视频网址网站| 精品免费人成视频app | 日本免费xxxx色视频| 免费无码一区二区三区蜜桃 | 97视频热人人精品免费| 国产一级在线免费观看| 免费在线观看亚洲| 亚洲中文无码亚洲人成影院| 亚洲一区二区影院| 国产国拍亚洲精品mv在线观看 | 久久久久免费精品国产小说| 狠狠热精品免费观看|