JAVAの反射、要約

1.一般的な概要

JavaプログラムのJavaリフレクション機構は、このクラスのすべてのプロパティおよびメソッドへのアクセスを持って、クラスのいずれかのために、動作状態を指し、所与のオブジェクトのプロパティとメソッドのいずれかを呼び出すことができます。コンテンツへこの動的なアクセスと動的呼び出しオブジェクトクラスのメソッドと呼ばれる反射

2、反射、意味の使用


(1)反射を大幅に適応する能力を向上させるために、結合モジュールを低減し、柔軟性とスケーラビリティ手順を改善します。

(2)前にハードコードされたターゲットクラスなしで、プログラムは反射を介してオブジェクトの任意の種類を作成し、制御することを可能にします。
(3)実行時に反射・オブジェクト・クラスを使用して構築することができ、クラスは、オブジェクトのメソッドを呼び出し、メンバ変数とメソッドを用いて決定されます。
(4)ここで、反射がフレームにダイに書き込むコードを避けるためにリフレクションを使用する技術の枠組みを構築するための基礎です。

3クラスの反射

次のようにJavaクラスに関連付けられた3.1反映しました。

クラス名 使用
Classクラス Javaアプリケーションの実行中のエンティティのクラスを代表してクラスおよびインタフェースを表し
Fieldクラス クラスのメンバ変数に代わって(もクラス属性のメンバ変数として知られています)
メソッドのクラス この方法は、以下のクラスを表します
コンストラクタクラス 代表クラスのコンストラクタ

 

3.2、クラスのカテゴリ:

関連するクラスのメソッドを取得します

方法 使用
asSubclass(クラス<U> clazz) そのサブクラスの代表クラスオブジェクトに渡されたオブジェクト
キャスト オブジェクトクラスまたはインタフェースにオブジェクトの代表
getClassLoader() クラスローダを取得します。
getClasses() これは、配列に含まれる配列、クラスのすべてのオブジェクトとインタフェースクラスpublicクラスを返します
getDeclaredClasses() これは、アレイに含むすべてのクラスのクラスのオブジェクトの配列とインターフェースクラスを返します
forName(文字列クラス名) オブジェクトクラス名に応じて、クラスに戻り
getName() クラスのフルパス名を取得します。
newInstance() クラスのインスタンスを作成します。
getPackage() クラスのパッケージを取得します。
getSimpleName() 名前は、クラスを派生されます
getSuperclass() 現在の名前が派生したクラスは親クラスを継承しています
でgetInterfaces() 現在のクラスまたはクラスがインタフェースを実装して取得します

プロパティメソッドに関連するクラスを返します:

方法 使用
getField(文字列名) パブリックプロパティオブジェクトを取得
れるGetFields() すべてのパブリックプロパティのオブジェクトへのアクセス
getDeclaredField(文字列名) Propertyオブジェクトの
getDeclaredFields() オブジェクトのすべてのプロパティを取得します。

 

関連するクラスのノートを得る方法

方法 使用
getAnnotation(クラス<A> annotationClass) クラスのパラメータの型のオブジェクトに一致する公開返し注釈
getAnnotations() そのクラスパブリックコメントのすべてのオブジェクトを返します。
getDeclaredAnnotation(クラス<A> annotationClass) パラメータの型と一致するクラスのノートのすべてのオブジェクトを返します。
getDeclaredAnnotations() そのようなオブジェクトのリターンすべてのコメント

関連するクラスのコンストラクタを得る方法

方法 使用
getConstructor(クラス... <?>たparameterTypes) パブリッククラスのコンストラクタ引数の型マッチングを取得
getConstructors() クラスのすべてのpublicコンストラクタを取得
getDeclaredConstructor(クラス... <?>たparameterTypes) マッチングクラスのコンストラクタのパラメータの型を取得
getDeclaredConstructors() すべてのクラスのコンストラクタを取得します。

関連するクラスのメソッドを取得

方法 使用
getMethod(文字列名、クラス... <?>たparameterTypes) こうした公共の道の取得
getMethods() すべてのそのような方法は、公共取得します
getDeclaredMethod(文字列名、クラス... <?>たparameterTypes) このような方法を得ます
getDeclaredMethods() すべてのメソッドは、クラスを取得します

クラスの他の重要なメソッド

方法 使用
isAnnotation() 注釈型は、trueを返した場合
isAnnotationPresent(クラスannotationClass <?注釈拡張します>) 指定された型の注釈型は、trueを返した場合
isAnonymousClass() 如果是匿名类则返回true
isArray() 如果是一个数组类则返回true
isEnum() 如果是枚举类则返回true
isInstance(Object obj) 如果obj是该类的实例则返回true
isInterface() 如果是接口类则返回true
isLocalClass() 如果是局部类则返回true
isMemberClass() 如果是内部类则返回true

3.3、Field类

Filed代表类的成员变量(成员变量也称为类的属性)。

方法 用途
equals(Object obj) 属性与obj相等则返回true
get(Object obj) 获得obj中对应的属性值
set(Object obj, Object value) 设置obj中对应属性值

3.4、Method类

Method代表类的方法。

方法 用途
invoke(Object obj, Object... args) 传递object对象及参数调用该对象对应的方法

3.5、Constructor类

Constructor代表类的构造方法。

方法 用途
newInstance(Object... initargs) 根据传递的参数创建类的对象

おすすめ

転載: www.cnblogs.com/yinfengjiujian/p/11775104.html
おすすめ