リフレクションは、その名前が示すように、クラスのランタイム インスタンスを完全に検査できる Java の API (アプリケーション プログラミング インターフェイス) 機能です。これは Java.lang.reflect パッケージの一部です。このパッケージはプログラムの開始時にインポートする必要があり、その後、「リフレクション」の機能を理解するために関数が呼び出されます。どのクラスの行動も研究できます。メタデータは、実行時にリフレクション API を使用して抽出または変更できます。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
クラス情報を抽出するためのリフレクション API での一般的な関数の構文を以下に示します。
リフレクション クラスは、Java.lang.reflect パッケージで定義されたさまざまなメソッドを使用してクラス情報を抽出します。クラスに関する情報は getClass() メソッドを使用して抽出でき、コンストラクターは getConstructors() メソッドを使用して、メソッドは getMethods() メソッドを使用して抽出できます。これらのメソッドはリフレクション API で定義されていますが、メソッド、コンストラクターなどを含むクラスの情報を返します。 Reflection API は、JAVA プログラム、Eclipse などの IDE (統合開発環境)、Netbeans で使用されます。これは、以下のセクションで提供される例を参照するとよく理解できます。
さまざまな例を以下に示します:
コード:
//package test; import java.lang.Class; public class test{ public static void main(String args[]){ Class<Boolean> c1 = boolean.class; System.out.println("Here, the class name is: "+c1.getName()); Class<test> c2 = test.class; System.out.println("This is another instance of class is used to derive class name : "+c2.getName()); } }
出力:
説明: 上記の例を確認してください。これには、「test」という名前のすべてのクラスが含まれるパッケージがあります。テスト パッケージには「テスト宣言」クラスがあります。このクラスには、プログラムの実行を開始する main メソッドも含まれています。クラス「Class
次の行では、プリミティブ データ型を使用するのではなく、「test」という名前のユーザー定義データ型「クラス」を考慮してデータを抽出しています。 「授業」 「C2」という名前のオブジェクトでインスタンス化されるリフレクション クラスです。ここではクラス名がテストされ、関数「getName()」を使用してこのクラスの名前を取得するためにオブジェクトが使用されます。最終出力にはこれらの関数の戻り値が含まれており、出力画面に表示されます。
コード:
//package test; import java.lang.Class; class Simple{} public class test{ public static void main(String args[]){ try{ Class<?> c=Class.<em>forName</em>("Simple"); System.<em>out</em>.println("The result is: "+c.isInterface()); }catch(Exception e){System.<em>out</em>.println(e);} } }
出力:
説明: 上の例では、前の例 1 で作成したように、「test」という名前のパッケージが作成されます。このパッケージには、メイン クラスではないクラス名「Simple」が含まれています。 。ここでのメインクラスは、プログラムの実行を開始するメインメソッドを含む「test」クラスです。 「クラス >」ここでは「c」という名前のオブジェクトを介してインスタンス化されたリフレクション クラスの識別子です。次に、このオブジェクトを使用して、「isInaterface」という名前の関数の決定インジケーター (True または false) を取り出します。この関数はクラスをパラメータとして取得します。この場合、パラメータとして引き込まれたクラスは「Simple」クラスです。このクラスはインターフェースではないため、出力画面では結果として「false」が返されます。この関数を呼び出すには、クラス オブジェクト「c」が使用されました。
JAVA でリフレクションを使用する利点のいくつかを以下に示します。
JAVA リフレクションを使用すると、クラス名をまったく知らなくても、クラス、インターフェイス、メソッドなどをイントロスペクトできます。これはすべてコンパイル時に行われます。これは、クラスのインスタンスの作成に使用でき、これを使用してクラスのプライベート メンバーを抽出できるため、JAVA の最も強力なプロパティの 1 つと考えられています。開発者はこれを実行時やデータベースとオブジェクトのマッピングにも使用できます。
以上がJAVA でのリフレクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。