您好,登錄后才能下訂單哦!
本篇內容主要講解“java之JDK動態代理實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java之JDK動態代理實例分析”吧!
1、說明
Java中提供了一個動態代理類 Proxy,Proxy 并不是我們所說的代理對象的類,而是提供了一個創建代理對象的靜態方法(newProxyInstance)來獲取代理對象。
2、實例
public class HelloWorld { public static void main(String[] args) { // 獲取代理對象 ProxyFactory factory = new ProxyFactory(); SellTickets proxyObject = factory.getProxyObject(); proxyObject.sell(); } } // 賣票接口 interface SellTickets { void sell(); } // 火車站,火車站具有賣票功能,所以需要實現SellTickets接口 class TrainStation implements SellTickets { @Override public void sell() { System.out.println("火車站賣票"); } } // 代理工廠,用來創建代理對象 class ProxyFactory { private TrainStation station = new TrainStation(); public SellTickets getProxyObject() { // 使用Proxy獲取代理對象 /** * newProxyInstance() 方法參數說明: * ClassLoader loader: 類加載器,用于加載代理類,使用真實對象的類加載器即可 * Class<?>[] interfaces:真實對象所實現的接口,代理模式真實對象和代理對象實現相同的接口 * InvocationHandler h:代理對象的調用處理程序 */ SellTickets sellTickets = (SellTickets) Proxy.newProxyInstance( station.getClass().getClassLoader(), new InvocationHandler() { /** * InvocationHandle中invoke方法參數說明: * proxy:代理對象 * method:對應于在代理對象上調用的方法的Method實例 * args:代理對象調用接口方法是傳遞的實際參數 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("代理點收取一些服務費用(JDK動態代理方法)"); // 執行真實對象 Object result = method.invoke(station, args); return result; } }); return sellTickets; } }
到此,相信大家對“java之JDK動態代理實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。