1. 程式人生 > >Java中代理的簡明使用

Java中代理的簡明使用

加強 eth return 動態 tcl throws new system ins

代理

首先應該明確兩個概念

代理對象:對訪問目標對象進行攔截的對象

目標對象:實際要訪問的對象

代理的作用

可以用對方法的加強;

動態代理demo

    

//目標對象
public class Target implements Itarget{

	@Override
	public void test1() {
		System.out.println("目標對象的test1()");
		
	}

}

  

//代理對象
public class ProxyDemo1 {
    @Test
    public
void test1(){ //創建動態代理對象 final Target tar=new Target();//在匿名內部類被調用,加final修飾 Itarget newProxyInstance = (Itarget) Proxy.newProxyInstance(tar.getClass().getClassLoader(), //傳遞一個和目標一致的類加載器 tar.getClass().getInterfaces(), //傳遞一個一個Class<?>[] interfaces
new InvocationHandler() {//使用匿名內部類實現接口InvocationHandler @Override public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable { System.out.println("調用目標方法前的邏輯"); Object invoke = method.invoke(tar, args); System.out.println("調用目標方法前的邏輯"); return invoke; } } ); newProxyInstance.test1();//實際調用了InvocationHandler下的invoke } }
//執行結果
調用目標方法前的邏輯 目標對象的test1() 調用目標方法前的邏輯

註意:jdk的Proxy方式實現的動態代理目標對象必須有接口,沒有接口不能實現jdk

     版本的動態代理.

Java中代理的簡明使用