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

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

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

    Method 類中 invoke方法的調用

    public void invokeActionHandler(ModelAndView mv , HttpServletRequest request) throws Exception{
            String className 
    = mv.getClassName();
            String methodName 
    = mv.getMethodName();
            
    //load class
            Class controllerClass = cache.loadClass(className);//== Class.forName(className);java反射機制,jvm加載lassName類
            Class parentControllerClass = cache.loadClass(baseControllerClass);//class org.bluechant.mvc.controller.Controller
            
    //load method參數1類,創建一個方法為setRequest參數為HttpServletRequest.class的方法與method = clazz.getDeclaredMethod(setRequest, HttpServletRequest.class);與HttpServletRequest的setRequest方法一致的方法.
            Method setRequest = cache.loadMethod(parentControllerClass, "setRequest"new Class[] { HttpServletRequest.class });    //HttpServletRequest.class,java的反射機制得到自己的類,能夠擁有自己的方法值,(Method setRequest獲取成員函數)
            Method setModelAndView = cache.loadMethod(parentControllerClass, "setModelAndView"new Class[] { ModelAndView.class });//org.bluechant.mvc.controller.Controller-setModelAndView@6024418  public void org.bluechant.mvc.controller.Controller.setModelAndView(org.bluechant.mvc.controller.ModelAndView)
            Method targetMethod = cache.loadMethod(controllerClass, methodName, new Class[]{});
            
    //buiid controller instance and invoke target method以上setRequest,setModelAndView,targetMethod都放在cache(hashMap中)
            Object instance = controllerClass.newInstance();//加載className類
            setRequest.invoke(instance, new Object[] { request });//對帶有指定參數的指定對象調用由此 Method 對象表示的基礎方法    
            setModelAndView.invoke(instance, new Object[] { mv });//instance立即為原型指針
            targetMethod.invoke(instance, new Object[]{});    
            
    //調用instance類中targetMethod這個方法,Object[]{}這個作為參數..
            
    //invoke根據實體獲得方法,添加所要造的參數,就是個找實例的方法克隆工廠,由Method獲得實例模型,由方法鍛造樣子,傳入參數得出想要結果
        }


    方法說明實例:


    }
    class ClassB{
     public ClassB(){
      System.out.println("this is ClassB");
     }

     public Object invokeMehton(Object owner,String methodName,Object[] args) throws Exception{
                      //根據methodName獲得owner里面的方法。args是對應方案參數。
      Class wnerClass=owner.getClass();
      Class[] argsClass=new Class[args.length];
      for(int i=0,j=args.length;i<j;i++){
        argsClass[i] = args[i].getClass();
      }
      Method method = ownerClass.getMethod(methodName, argsClass); 
      return method.invoke(owner, args);
     }
    }

    輸出為
    this is ClassB
    300
    outabccc

    說明c調用Class方法成功。


    import java.lang.reflect.Method;

    public class ClassA {
            //ClassA里面有add、和StringAdd兩個不同方法。c是ClassB的Object
     ClassB c=new ClassB();
     public void add(Integer param1, Integer param2) {  
      
        System.out.println(param1 + param2);  
       
       }
     public void StringAdd(String abc){
      System.out.println("out"+abc);
     }
     public static void main(String[] args){
      ClassA a=new ClassA();
      try {
       a.c.invokeMehton(a, "add",new Object[] {new Integer(100),new Integer(200)});//反射調用方法add
       a.c.invokeMehton(a, "StringAdd",new Object[] {new String("abccc")});//反射調用方法StringAdd
      } catch (Exception e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      
      
      
     }


     



    posted on 2012-05-24 18:54 youngturk 閱讀(603) 評論(0)  編輯  收藏 所屬分類: Java基礎java連接數據庫解析

    <2012年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲无线码一区二区| 亚洲人成人网站18禁| 四虎最新永久免费视频| 亚洲精品无码不卡在线播放| 亚洲免费日韩无码系列| 一区二区三区在线免费看| 亚洲区日韩精品中文字幕| 亚洲欧洲美洲无码精品VA| 在线永久看片免费的视频| 国产精品亚洲专区无码不卡| 国产成人精品日本亚洲| 国内自产少妇自拍区免费| 97在线视频免费公开视频| 亚洲三级高清免费| 亚洲精品无码国产| 国产精品四虎在线观看免费 | 中出五十路免费视频| 亚洲伊人久久精品| 亚洲午夜福利在线观看| 成人毛片免费播放| a级黄色毛片免费播放视频| 亚洲中文字幕无码爆乳| 亚洲av永久无码精品网站| 日本xxwwxxww在线视频免费| 国产精品免费看久久久| 精品一区二区三区无码免费直播| 亚洲美女视频网址| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲午夜一区二区三区| 亚洲精品无码午夜福利中文字幕| 国产成人免费片在线观看| 五月婷婷在线免费观看| 99视频在线观看免费| 国产亚洲人成在线播放| 亚洲av一本岛在线播放| 亚洲大尺度无码无码专区| 国产亚洲色婷婷久久99精品91| 最新69国产成人精品免费视频动漫| 免费无码中文字幕A级毛片| xxxxx做受大片在线观看免费| 亚洲精品乱码久久久久久V|