<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

    主站蜘蛛池模板: 精品在线视频免费| 亚洲av中文无码| 99视频在线观看免费| 亚洲精品亚洲人成在线播放| 国产l精品国产亚洲区在线观看| 国产精品无码一区二区三区免费| 18禁美女裸体免费网站| a在线视频免费观看在线视频三区| 亚洲精品无码一区二区| 亚洲黄色中文字幕| 亚洲第一AAAAA片| 久久亚洲国产精品123区| 日本一道高清不卡免费| 成人免费视频77777| 最近中文字幕完整免费视频ww| 久久国产精品免费| 黄色毛片免费在线观看| 亚洲欧好州第一的日产suv| 亚洲国产福利精品一区二区| 日产亚洲一区二区三区| 亚洲av无码成人黄网站在线观看| 亚洲熟妇无码乱子AV电影| 亚洲av无码专区在线观看素人| 国产青草视频免费观看97| 午夜毛片不卡免费观看视频| 毛片免费全部免费观看| 免费电影在线观看网站| av无码久久久久不卡免费网站 | 亚洲国产精品无码久久青草 | 日韩欧美亚洲中文乱码| 亚洲中文字幕AV在天堂| 亚洲免费在线观看视频| 亚洲伊人久久精品| 亚洲人成电影网站| 亚洲av永久综合在线观看尤物| 亚洲免费在线观看视频| 亚洲午夜无码久久久久小说| 亚洲AV性色在线观看| 国产产在线精品亚洲AAVV| 特级毛片aaaa免费观看| 波霸在线精品视频免费观看|