Java動態代理範例程式碼__Java

來源:互聯網
上載者:User

Proxy 提供用於建立動態代理類和執行個體的靜態方法。簡潔方法:
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
                                          new Class[] { Foo.class },
                                          handler);

InvocationHandler 是代理執行個體的調用處理常式 實現的介面。
每個代碼執行個體都具有一個關聯的調用處理常式。對代理執行個體調用方法時,將對方法調用進行編碼並將其指派到它的調用處理常式的 invoke 方法。

對java的動態代理機制有點陌生了,整理一下以前的代碼。 package  invocation;

/** */ /**
 * 定義一個介面,兩個方法
 * @author Jessica
 *
 */
public   interface  Subject  ... {
    public void print(String str);
    
    public void print2();

}

  package  invocation;
/** */ /**
 * 定義一個類,實現Subject介面
 * @author Jessica
 *
 */
public   class  RealObject  implements  Subject ... {

    public RealObject() ...{
        super();
    }
    public void print(String str)...{
        System.out.println("run into print");
    }
    
    public void print2()...{
        System.out.println("run into print2");
    }

}

  package  invocation;

import  java.lang.reflect.InvocationHandler;
import  java.lang.reflect.Method;
import  java.lang.reflect.Proxy;

/** */ /**
 * 實現InvocationHandler介面,為RealObject對象提供代理(代理類)
 * @author Jessica
 *
 */
public   class  CallBack  implements  InvocationHandler ... {

    private Object obj;

    public CallBack(Object obj) ...{
        this.obj = obj;
    }
    /** *//**
     * 給對象建立動態代理
     * @param obj 需要建立代理的對象
     * @return 返回動態代理對象
     */
    public static Object factory(Object obj) ...{
        Class cls = obj.getClass();
        return Proxy.newProxyInstance(cls.getClassLoader(),
                cls.getInterfaces(), new CallBack(obj));
    }
    /** *//**
     * 在代理執行個體上處理方法調用並返回結果。
     * 在與方法關聯的代理執行個體上調用方法時,將在調用處理常式上調用此方法。
     * @proxy - 在其上調用方法的代理執行個體
     * @method - 對應於在代理執行個體上調用的介面方法的 Method 執行個體
     * @args - 包含傳入代理執行個體上方法調用的參數值的對象數組 
     * @Throwable - 從代理執行個體上的方法調用拋出的異常
     */

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.