[Groovy123] Groovyで基本的な概念とデザインのアイデア

Groovyの:

http://www.groovy-lang.org/

https://blog.csdn.net/weixin_33862993/article/details/86258972

 

https://www.cnblogs.com/zqlxtt/p/5741240.html

 

Gradleの(Groovyの例):

https://www.cnblogs.com/zqlxtt/tag/gradle/

https://www.jianshu.com/p/20f6695a9bd5

 

その他の概念:

反射

https://blog.csdn.net/jin_luo/article/details/79763938

https://segmentfault.com/a/1190000016105692

https://www.cnblogs.com/dabai123/p/11595178.html

https://www.cnblogs.com/zuzizai/p/7594368.html

1.1。ハードコード(ノーマルモード)

RTTIが想定され 、すでにあらゆる種類の情報を知って、コンパイル時に コーディングするときは、直接の使用の最も一般的なタイプである特定の種類の情報を、使用することができます。コンパイル時に、コンパイラによって 容器、一般的な 完全性保証型システムは、実行時に、によって、 変換の種類 操作これを確実にします。

1.2。(反射法)を反映

私たちがすることができます反映し 、実行時に型情報を取得し、使用 、それは主にコンパイル段階で使用されているようなフレームの様々な種類などの情報シーンのすべてのタイプを、取得することはできません。

反射は、実行時に、ハード(等オブジェクトの作成、メソッド呼び出しなど)APIの特殊なセットによって実行されたすべての機能の動的Java実装を符号化することができます。ハードコードされたと比較して、JavaリフレクションAPIは、はるかに複雑であるが、それは私たちに大きな柔軟性を提供します。

Classクラスのオブジェクトの例(4つの方法):

1)が提供される:具象クラス、クラスが既知の場合、クラス属性取得、方法は 
                    、最高のアプリケーションのパフォーマンス最も信頼性が高い
       例:クラス= clazzストリング。クラス ;
2)を得た:クラスのインスタンスを知られ、呼び出し例はgetClass()メソッドは、対象となる
                    クラスオブジェクト取る
       インスタンス:クラスclazz =「www.atguigu.com。」はgetClass() ;
3)提供:クラスの完全修飾クラス名が知られており、クラスパス内のクラスで
       クラスクラスの静的メソッドにforName() にClassNotFoundExceptionをスローすることができる取得し
       、例えば:クラスclass = clazz。にforName( "java.lang.Stringで");
4)そうでない場合は(必須ではない)。
クラスローダthis.getClass = Clで()。getClassLoader () ;
= clazz4 ClでクラスのloadClass( "クラスの完全なクラス名")。

/ * * RefelctDemo * / 

パブリック クラスReflectDemo {
     // 三つの方法コンストラクタ(フレームプログラマ)の合計を取得
    @Test
     公共 無効TEST1()例外、例外{スロー
        クラスclazzを   =学生。クラス
        コンストラクタC。= clazz GetConstructorNULL ); 
        学生S =(学生)c.newInstance(NULL 
        。システムOUTの.println(S); 
        
    } 
    @Test 
    公共 ボイドTEST2()は例外、例外{スロー
        クラスclazzを  =学生。クラス
        オブジェクトのオブジェクト = clazz。newInstance(); 
        システム。アウト .println(オブジェクト。.getClass()のgetName())。
        
    } 
    @Test 
    公共 ボイドTEST3()は、例外、例外{スロー
        クラスC =クラス。forName" Reflect.Student " ); 
        学生S = (学生)c.newInstance(); 
        システム。アウト.println(S); 
        
    } 
    // 获取有参数构造
    @Test
     公共 のボイドTEST4()例外、例外{スロー
    クラスclazzを =学生。クラス;
     // 取得コンストラクタ 
    コンストラクタclazz.getConstructor C =(文字列。クラス); 
    学生S =(学生)c.newInstance(" 趙日の日" ); 
    システム。OUT .println(s.getNameは()); 
    } 
    // プライベートコンストラクタメソッドゲット
    @Test
     公共 のボイドTEST5を()例外、例外{スロー
        クラスclazz =学生クラスを
        コンストラクタAN = clazz getDeclaredConstructor。(日付クラス);
        // 暴力反射 
        an.setAccessible(真の); 
        学生S =(学生)an.newInstance(新しい日付()); 
        システム。アウト.println(s.getData()); 
                
    } 
}

動的プロキシ

https://www.jianshu.com/p/7b5af86a9984

さらに代理店よりのJavaの動的プロキシ、それは動的プロキシアプローチへの呼び出しを処理し、プロキシと動的に作成することができますので。動的プロキシで作られたすべてのコールは、単一の呼び出し上のプロセッサにリダイレクトされます。

 

JDKダイナミックプロキシの実装

Proxy.java

 

InvocationHandler.java

クロージャ

おすすめ

転載: www.cnblogs.com/cathygx/p/12049710.html