Javaのリフレクション機能の使い方
Javaのリフレクション機能は、次のような手順で利用できます。
- Classオブジェクトの取得: Classクラスは3種類の取得方法があります: クラス名.class、オブジェクトのgetClass()メソッド、ClassクラスのforName()メソッド。
- クラスオブジェクトを使用すると、インスタンスを作成したりメソッドを呼び出したりできます。newInstance() メソッドを使用するとクラスのインスタンスを作成でき、getConstructor() メソッドを使用するとクラスのコンストラクタを取得してから newInstance() メソッドを呼び出してインスタンスを作成できます。getMethod() メソッドでクラスのメソッドを取得してから、invoke() メソッドを使用してメソッドを呼び出します。
- フィールドの取得: getFields()メソッドでクラスの公開フィールドを取得し、getDeclaredFields()メソッドでクラスの全フィールドを取得し、get()メソッド、set()メソッドでフィールドの値を取得、設定する。
- アノテーションを取得する:クラスのアノテーションはgetAnnotations()メソッドを使用して取得し、次にリフレクションを使用してアノテーションのプロパティを取得します。
- 動的プロキシ : ProxyクラスとInvocationHandlerインタフェースで動的にプロキシオブジェクトを作成して、そのオブジェクトでメソッドを呼び出す
リフレクション機構を使用すると、実行時にクラスに関する情報を取得し、動的にインスタンスを作成、メソッドの呼び出し、フィールドとアノテーションの取得などが可能ですが、リフレクション機構を使用するとパフォーマンスが低下するため、実際には使用をできるだけ控える必要があります。