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

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

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

    dingfirst

    On the Road

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      8 隨筆 :: 2 文章 :: 3 評論 :: 0 Trackbacks

    先看一下Proxy的兩種用法:

    public ? interface ?Foo? {
    ????
    int ?doSomthing();
    }
    ???一個基本的實現:
    public?class?FooImpl?implements?Foo?{
    ????
    public?FooImpl()?{
    ????}


    ????
    public?int?doSomthing()?{
    ????????System.out.println(
    "FooImpl?doSomthing");
    ????????
    return?10;
    ????}

    ????
    }
    ???調用處理類,這也是aop的一種實現方式,呵呵。
    public?class?MyInvocationHandler?implements?InvocationHandler{
    ????Object?proxyObject;
    ????
    ????
    public?MyInvocationHandler(Object?_proxyObject)?{
    ????????
    this.proxyObject=_proxyObject;
    ????}


    ????
    public?Object?invoke(Object?proxy,?Method?method,?Object[]?args)?throws?Throwable?{
    ????????System.out.println(
    "in?proxy?instance");
    ????????
    return?method.invoke(proxyObject,args);
    ????}

    }
    ???兩種實現方式:
    public?class?ProxyUse?{
    ????
    public?ProxyUse()?{
    ????}


    ????
    public?void?useProxy1()?throws?SecurityException,?NoSuchMethodException,?InvocationTargetException,
    ????????????IllegalArgumentException,?IllegalAccessException,?InstantiationException?
    {
    ????????FooImpl?obj?
    =?new?FooImpl();
    ????????InvocationHandler?handler?
    =?new?MyInvocationHandler(obj);
    ????????Class?proxyClass?
    =?Proxy.getProxyClass(
    ????????????????Foo.
    class.getClassLoader(),?new?Class[]?{Foo.class});
    ????????Foo?f?
    =?(Foo)?proxyClass.
    ????????????????getConstructor(
    new?Class[]?{InvocationHandler.class}).
    ????????????????newInstance(
    new?Object[]?{handler});
    ????????System.out.println(f.doSomthing());
    ????}

    ????
    ????
    public?void?useProxy2()?throws?SecurityException,?NoSuchMethodException,?InvocationTargetException,
    ????????????IllegalArgumentException,?IllegalAccessException,?InstantiationException?
    {
    ????????FooImpl?obj?
    =?new?FooImpl();
    ????????InvocationHandler?handler?
    =?new?MyInvocationHandler(obj);
    ????????Foo?f?
    =?(Foo)?Proxy.newProxyInstance(
    ????????????Foo.
    class.getClassLoader(),
    ????????????
    new?Class[]?{?Foo.class?},
    ????????????handler
    ????????????);
    ????????System.out.println(f.doSomthing());
    ????}

    ????
    ????
    public?static?void?main(String?[]?args){
    ????????ProxyUse?use
    =new?ProxyUse();
    ????????
    try{
    ????????????use.useProxy1();
    ????????????use.useProxy2();
    ????????}
    catch(Exception?ex){
    ????????????ex.printStackTrace();
    ????????}

    ????}


    }

    看一下java api doc

    static?InvocationHandlergetInvocationHandler(Object?proxy)
    ??????????返回指定代理實例的調用處理程序。
    static?Class<?>getProxyClass(ClassLoader?loader, Class<?>...?interfaces)
    ??????????返回代理類的 java.lang.Class 對象,并向其提供類加載器和接口數組。
    static?booleanisProxyClass(Class<?>?cl)
    ??????????當且僅當指定的類通過 getProxyClass 方法或 newProxyInstance 方法動態生成為代理類時,返回 true。
    static?ObjectnewProxyInstance(ClassLoader?loader, Class<?>[]?interfaces, InvocationHandler?h)
    ??????????返回一個指定接口的代理類實例,該接口可以將方法調用指派到指定的調用處理程序。

    沒時間了,先這樣吧。


    ?

    posted on 2006-07-26 17:48 dingfirst 閱讀(275) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 性无码免费一区二区三区在线| selaoban在线视频免费精品| 一级特黄aaa大片免费看| 亚洲天天在线日亚洲洲精| 狼人大香伊蕉国产WWW亚洲 | 很黄很色很刺激的视频免费| 久久精品国产亚洲AV电影| 成人影片麻豆国产影片免费观看| 免费av一区二区三区| 国产亚洲蜜芽精品久久| 国产免费爽爽视频免费可以看| 老牛精品亚洲成av人片| 亚洲1区1区3区4区产品乱码芒果 | 中国国产高清免费av片| 美女免费精品高清毛片在线视| 亚洲国产成人精品久久| 拔擦拔擦8x华人免费久久| 成在人线AV无码免费| 97无码免费人妻超级碰碰碰碰 | 亚洲AV日韩AV天堂一区二区三区| 亚洲人午夜射精精品日韩| 国产成人高清精品免费软件 | 国产性生大片免费观看性| 两个人日本WWW免费版 | 永久亚洲成a人片777777| 中文字幕精品亚洲无线码二区| 亚洲AV无码一区二区二三区入口| 青青视频观看免费99| 国产最新凸凹视频免费| 免费不卡中文字幕在线| 亚洲男人的天堂www| 国内精品免费视频自在线| 国产免费小视频在线观看| 亚洲综合国产一区二区三区| 亚洲欧洲日产国产综合网| 亚洲一区免费视频| 91av免费在线视频| 两性刺激生活片免费视频| 亚洲天堂在线视频| 亚洲精品视频观看| CAOPORM国产精品视频免费|