您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)java中JDK動(dòng)態(tài)代理的原理是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。
Java主要應(yīng)用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級應(yīng)用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。
1、說明
Java中提供了一個(gè)動(dòng)態(tài)代理類 Proxy,Proxy 并不是我們所說的代理對象的類,而是提供了一個(gè)創(chuàng)建代理對象的靜態(tài)方法(newProxyInstance)來獲取代理對象。
2、實(shí)例
public class HelloWorld { public static void main(String[] args) { // 獲取代理對象 ProxyFactory factory = new ProxyFactory(); SellTickets proxyObject = factory.getProxyObject(); proxyObject.sell(); } } // 賣票接口 interface SellTickets { void sell(); } // 火車站,火車站具有賣票功能,所以需要實(shí)現(xiàn)SellTickets接口 class TrainStation implements SellTickets { @Override public void sell() { System.out.println("火車站賣票"); } } // 代理工廠,用來創(chuàng)建代理對象 class ProxyFactory { private TrainStation station = new TrainStation(); public SellTickets getProxyObject() { // 使用Proxy獲取代理對象 /** * newProxyInstance() 方法參數(shù)說明: * ClassLoader loader: 類加載器,用于加載代理類,使用真實(shí)對象的類加載器即可 * Class<?>[] interfaces:真實(shí)對象所實(shí)現(xiàn)的接口,代理模式真實(shí)對象和代理對象實(shí)現(xiàn)相同的接口 * InvocationHandler h:代理對象的調(diào)用處理程序 */ SellTickets sellTickets = (SellTickets) Proxy.newProxyInstance( station.getClass().getClassLoader(), new InvocationHandler() { /** * InvocationHandle中invoke方法參數(shù)說明: * proxy:代理對象 * method:對應(yīng)于在代理對象上調(diào)用的方法的Method實(shí)例 * args:代理對象調(diào)用接口方法是傳遞的實(shí)際參數(shù) */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理點(diǎn)收取一些服務(wù)費(fèi)用(JDK動(dòng)態(tài)代理方法)"); // 執(zhí)行真實(shí)對象 Object result = method.invoke(station, args); return result; } }); return sellTickets; } }
關(guān)于java中JDK動(dòng)態(tài)代理的原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。