<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 閱讀(604) 評論(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

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日本h在线精品免费观看| 九九视频高清视频免费观看| 日本免费中文字幕| 日韩亚洲一区二区三区| 国产免费拔擦拔擦8X高清在线人 | heyzo亚洲精品日韩| 亚洲av无码片vr一区二区三区| 歪歪漫画在线观看官网免费阅读 | 亚洲欧洲自拍拍偷综合| 亚洲一区二区三区免费观看| 亚洲沟沟美女亚洲沟沟| 野花高清在线电影观看免费视频| 亚洲制服丝袜精品久久| 成人毛片18岁女人毛片免费看| 99久久国产亚洲综合精品| 美女黄网站人色视频免费国产| 亚洲av日韩综合一区久热| 亚洲 小说区 图片区 都市| 精品多毛少妇人妻AV免费久久| 亚洲av永久无码精品漫画| 99爱在线精品视频免费观看9 | 老汉色老汉首页a亚洲| 67194国产精品免费观看| 亚洲欧美成人一区二区三区| 亚洲av无码专区在线观看素人| 中文字幕无线码中文字幕免费| 亚洲av无码乱码国产精品| 国产妇乱子伦视频免费| 亚洲av色香蕉一区二区三区| 亚洲一区AV无码少妇电影☆| 最近最好最新2019中文字幕免费| 亚洲精品第一国产综合野| 免费人成无码大片在线观看| 99久久国产免费中文无字幕| 亚洲色大成网站WWW国产| 亚洲日本va午夜中文字幕久久| 久久99热精品免费观看牛牛| 亚洲成a人片在线观看天堂无码 | 亚洲激情黄色小说| 亚洲高清免费视频| 亚洲一区二区三区免费观看|