Groovyの:
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 GetConstructor(NULL ); 学生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
クロージャ