[JVM]の研究では、動的プロキシを指摘します

ダイナミックエージェントJDK下記の例

インターフェイスの件名 

パブリック インターフェーステーマ{
     パブリック 抽象 ボイド要求()。
}

 

実装クラスRealSubject

パブリック クラス RealSubjectが実装サブジェクト{ 
    @Override 
    公共 ボイド要求(){ 
        System.out.printlnは( "realsubjctから" )。
    } 
}

 

演技クラス

パブリック クラス DynamicSubjectは、実装のInvocationHandler { 

    プライベートオブジェクトのサブ。

    公共DynamicSubject(オブジェクトobj){
         この .SUB = OBJ。
    } 

    @Override 
    パブリックオブジェクトを呼び出し(オブジェクトのプロキシは、メソッドの方法は、[]引数オブジェクト)スローのThrowable { 
        するSystem.out.println( "を呼び出す前に:" + メソッド); 
        method.invoke(この.SUB、引数); 
        System.out.println( "呼び出した後:" + メソッド)。
        リターン ヌル
    } 
}

 

Clientクラス

パブリック クラスクライアント{
     公共 静的 ボイドメイン(文字列[]引数){ 
        RealSubject RS = 新しいRealSubject()。
        InvocationHandlerハンドラ = 新しいDynamicSubject(RS); 
        クラス CLS = <?> rs.getClass(); 

        被験者被験者 = (被写体)プロキシ。
                newProxyInstance(cls.getClassLoader()、cls.getInterfaces()、ハンドラ); 
        subject.request(); 
    } 
}

 

結果

呼び出す前に:パブリック 抽象 ボイドcom.learn.jvm.Subject.request()
realsubjctから
呼び出した後:パブリック 抽象 ボイド com.learn.jvm.Subject.request()

 

おすすめ

転載: www.cnblogs.com/heben/p/11478846.html