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

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

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

    泰仔在線

    java學(xué)習(xí),心情日記,繽紛時(shí)刻
    posts - 100, comments - 34, trackbacks - 0, articles - 0

    Java中反射的使用

    Posted on 2006-09-05 14:13 泰仔在線 閱讀(1356) 評(píng)論(0)  編輯  收藏 所屬分類: Java 相關(guān)

    所用方法:

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

           String name ——待反射的目標(biāo)方法

           Class... parameterTypes ——待反射的目標(biāo)方法的參數(shù)類型的列表

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

           Object obj ——待調(diào)用反射方法的宿主對(duì)象

           Object... args ——傳入待調(diào)用反射方法參數(shù)的列表

    使用說明:

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

    /**

     * 
    @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();

           }


     

    }

    調(diào)用實(shí)例

    》》調(diào)用目標(biāo)為了調(diào)用 obj 對(duì)象的 methodName 方法,這兩個(gè)值一般作為參數(shù)傳入

    Object obj  =   new  PersonService();

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

    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();

                  }

    代碼說明:

    在實(shí)例中待調(diào)用方法的參數(shù)類型列表,參數(shù)列表如下

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

    Object[] arg = {person2, person };

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

    Class[] cls = {Person.class };

    Object[] arg = { person };

    則會(huì)調(diào)用 public String PersonTest(Person person) 方法。

    當(dāng)然如果參數(shù)類型列表換成 Class[] cls = {String.class };

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

    如果參數(shù)類型與參數(shù)不對(duì)應(yīng):

    Class[] cls = {Person.class };

    Object[] arg = { String };

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

    主站蜘蛛池模板: 青草草色A免费观看在线| 日韩中文字幕免费| 国产精品无码免费播放| 亚洲综合国产精品| 一级毛片免费播放| 亚洲 小说区 图片区 都市| 亚洲国产精品一区二区成人片国内| 免费激情网站国产高清第一页| 国产免费AV片无码永久免费| 亚洲an天堂an在线观看| 亚洲精品第一国产综合亚AV| 中文字幕在线成人免费看| 亚洲中文字幕在线观看| 亚洲AV无码片一区二区三区| 99久久国产免费-99久久国产免费| 免费一区二区视频| 一个人看的免费视频www在线高清动漫 | 亚洲va在线va天堂va不卡下载| 国产一精品一AV一免费| 亚洲高清无在码在线电影不卡| 国产免费AV片在线播放唯爱网| 亚洲私人无码综合久久网| 在线成人精品国产区免费| 亚洲va在线va天堂va888www| 黄色成人网站免费无码av| 精品国产日韩亚洲一区在线| 亚洲一区二区三区国产精品| 免费国产黄网站在线观看视频| 亚洲国产精品日韩在线观看| 少妇无码一区二区三区免费| 亚洲福利视频一区二区三区| 国产免费爽爽视频在线观看| 亚洲综合小说久久另类区| 国产极品粉嫩泬免费观看| 国产高清视频免费在线观看| 亚洲午夜福利精品无码| 97视频免费观看2区| 亚洲成av人片在www鸭子| 国产成人A人亚洲精品无码| 欧美最猛性xxxxx免费| 国产国产人免费人成成免视频|