說明
1、呼叫Proxy類別的newProxyInstance方法來取得代理類別實例。
2、這個代理類別實作了指定的介面並且會把方法呼叫分發到指定的呼叫處理器。
方法宣告
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException
參數
#loader:定義了代理程式類別的ClassLoder
interfaces:代理類別實作的介面清單
h:呼叫處理器,也就是我們上面定義的實作了InvocationHandler介面的類別實例
實例
public class Main { public static void main(String[] args) { //创建中介类实例 DynamicProxy inter = new DynamicProxy(new Vendor()); //加上这句将会产生一个$Proxy0.class文件,这个文件即为动态生成的代理类文件 System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles","true"); //获取代理类实例sell Sell sell = (Sell)(Proxy.newProxyInstance(Sell.class.getClassLoader(), new Class[] {Sell.class}, inter)); //通过代理类对象调用代理类方法,实际上会转到invoke方法调用 sell.sell(); sell.ad(); } }
以上是java動態產生代理類別的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!