久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

java proxy動態代理怎么實現

142次閱讀
沒有評論

共計 1286 個字符,預計需要花費 4 分鐘才能閱讀完成。

在 Java 中,可以通過使用 java.lang.reflect.Proxy 類來實現動態代理。
首先,需要定義一個接口,代表被代理類和代理類都需要實現的方法。

public interface Subject {void doSomething();
}

然后,創建一個實現了該接口的被代理類。

public class RealSubject implements Subject {public void doSomething() {System.out.println("RealSubject do something");
}
}

接下來,創建一個代理類,實現 InvocationHandler 接口,并覆蓋它的 invoke 方法。

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyHandler implements InvocationHandler {
private Object target;
public ProxyHandler(Object target) {this.target = target;}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// 在調用被代理類的方法之前,可以添加一些前置處理
System.out.println("Before calling the method");
// 調用被代理類的方法
Object result = method.invoke(target, args);
// 在調用被代理類的方法之后,可以添加一些后置處理
System.out.println("After calling the method");
return result;
}
}

最后,使用 Proxy.newProxyInstance 方法創建代理對象。

public class Main {public static void main(String[] args) {RealSubject realSubject = new RealSubject();
ProxyHandler proxyHandler = new ProxyHandler(realSubject);
// 創建代理對象
Subject proxySubject = (Subject) Proxy.newProxyInstance(realSubject.getClass().getClassLoader(),
realSubject.getClass().getInterfaces(),
proxyHandler);
// 調用代理對象的方法
proxySubject.doSomething();}
}

運行上述代碼,將會輸出以下結果:

Before calling the method
RealSubject do something
After calling the method

可以看到,通過動態代理,我們可以在調用被代理類的方法之前和之后添加一些額外的邏輯處理。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-21發表,共計1286字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 马公市| 磐安县| 镇江市| 宣城市| 桑植县| 遂平县| 冷水江市| 兴业县| 泗阳县| 洪雅县| 哈尔滨市| 荣成市| 平泉县| 石城县| 酒泉市| 清徐县| 平阴县| 施甸县| 南投市| 衡水市| 平顶山市| 三门峡市| 荣昌县| 边坝县| 高陵县| 通渭县| 北流市| 三门峡市| 新建县| 黔西县| 宁远县| 丹阳市| 六盘水市| 封开县| 顺平县| 金阳县| 额济纳旗| 资中县| 罗城| 肥城市| 翁源县|