コードコピーは次のとおりです。
java.lang.reflt.invocationhandlerをインポートします。
java.lang.reflt.methodをインポートします。
java.lang.reflt.proxyをインポートします。
パブリッククラスのLoghandlerはInvocationHandlerを実装しています{
プライベートオブジェクトデリゲート。
パブリックオブジェクトバインド(オブジェクトデリゲート){
this.delegate = Delegate;
return proxy.newproxyinstance(delegate.getClass()。getClassLoader()、
Delegate.getClass()。getInterfaces()、this);
}
@オーバーライド
パブリックオブジェクトの呼び出し(オブジェクトプロキシ、メソッドメソッド、オブジェクト[] args)
スローできるスロー{
オブジェクト結果= null;
試す {
system.out.println( "メソッドstart:" + method);
result = method.invoke(Delegate、args);
system.out.println( "メソッドエンド:" +メソッド);
} catch(例外e){
e.printstacktrace();
}
返品結果;
}
}
コードコピーは次のとおりです。
パブリックインターフェイスアニマル{
public void hello();
}
Dynamic Proxyは、プロキシモデルの拡張形式であり、フレームワークの設計と開発で広く使用されています(特にAOPベースのフレームワーク)。
コードコピーは次のとおりです。
パブリッククラスの猿は動物を実装します{
@オーバーライド
public void hello(){
// TODO自動生成方法スタブ
system.out.println( "hello");
}
}
コードコピーは次のとおりです。
パブリッククラスメイン{
public static void main(string [] args){
loghandler loghandler = new loghandler();
動物動物=(動物)loghandler.bind(new Monkey());
animal.hello();
}
}