5.6 リフレクションとアノテーション

プログラム

F5_6

プログラムの説明

リフレクションとアノテーション

F5_2クラスを見てください。EnrolleeLocatorインスタンスからリフレクションを用いて、アノテーション型で指定した値を実行時に読み取るソースコードです。

F5_2クラスを入力・コンパイルと実行を行ってください。EnrolleeLocatorクラスのインスタンス変数に付けられた注釈である@JsonbProperty(value = "enrollees")のvalueの値が出力されます。

クラスメソッドprintでは「Classクラスのインスタンスから、getDeclaredFields()メソッドを呼び出すことで、Field型の配列を得ます」、「Field型からisAnnotationPresent(アノテーション型のクラスリテラル)メソッドを呼び出し、アノテーションが付けられているか確認します」、次にアノテーションが付けられている場合には「アノテーションを取り出し、具体的なアノテーション型にキャストすることで、valueメソッドを呼び出して値を得ます」となります。

mainメソッドのコメントはEnrolleeLocatorインスタンスへのEnrolleeインスタンスの追加です。コメントにした理由はクラスメソッドprintの動作には影響しないからです。

注意

アノテーション型はソースコードのメソッド名、インスタンス変数名等の記述に影響を与えることなく注釈として、情報を付加させることができます。註釈をEnrolleeLocatorクラスではインスタンス変数名と同じにしていますが、追加で他の値を得られることが重要です。