手順
1. Proxy クラスの newProxyInstance メソッドを呼び出して、プロキシ クラスのインスタンスを取得します。
2. このプロキシ クラスは、指定されたインターフェイスを実装し、メソッド呼び出しを指定された呼び出しプロセッサに分散します。
メソッド宣言
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException
パラメータ
loader: プロキシ クラスを定義する ClassLoder
interfaces:プロキシ クラスによって実装されたインターフェイスのリスト
h: 呼び出しプロセッサ。これは、InvocationHandler インターフェイスを実装する上で定義したクラス インスタンスです。
Instance
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 中国語 Web サイトの他の関連記事を参照してください。