<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 閱讀(266) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 好大好深好猛好爽视频免费| 国产在线观看免费av站| 国产成人精品免费视频大全麻豆| 亚洲人成无码网站| 中文字幕一区二区三区免费视频| 国产福利电影一区二区三区,亚洲国模精品一区| 大桥未久亚洲无av码在线| 日韩吃奶摸下AA片免费观看| 国产日本亚洲一区二区三区| 18观看免费永久视频| 亚洲国产综合人成综合网站00| 成人免费福利视频| 久久乐国产综合亚洲精品| 免费观看大片毛片| 免费看一级一级人妻片| 亚洲日韩欧洲乱码AV夜夜摸| 久久国产乱子伦精品免费看| 亚洲国产精品成人精品软件| 免费a级毛片无码a∨蜜芽试看| 亚洲gay片在线gv网站| 亚洲人成无码www久久久| 成人免费ā片在线观看| 精品亚洲成AV人在线观看| 最近高清中文字幕免费| 亚洲电影中文字幕| 1024免费福利永久观看网站| 国产99在线|亚洲| 免费一区二区三区四区五区| 久久久久久国产a免费观看不卡| 久久亚洲精品成人| 最近高清国语中文在线观看免费| 国产成人久久精品亚洲小说| 亚洲日韩精品射精日| 国产免费的野战视频| 老妇激情毛片免费| 少妇中文字幕乱码亚洲影视| 成全视频免费高清 | 中文字幕专区在线亚洲| 久久久久国产精品免费网站| 在线亚洲高清揄拍自拍一品区| 亚洲国产成人精品91久久久 |