クラスの情報を取り扱う
JDK1.1 からクラスの情報をアプリケーション実行中に動的にアクセスして
取り出すための
java.lang.reflectパッケージ
が追加されました。その使用法について解説します。
クラスの情報を取り扱うためのクラスとして java.lang に Classという
名前のクラスが存在します。
このクラスは、あるクラス(もしくはオブジェクト)がどんなクラスであるか
を知るのに利用できます。たとえば、「クラスの名称」、「クラスが配列かどうか」、
「クラスがインターフェイスかどうか」、「そのクラスのスーパークラスは何か」
などの情報を知るメソッドを提供します。
また、逆に指定された名称のクラスの情報を返したり、オブジェクトを生成するよう
な機能もあります。これらの機能は仮想マシンの内部でも利用されています。
ただし、Classクラスはクラスのメンバーの情報などは提供しません。
これらのより詳しい情報を知るための機能が java.lang.reflect に提供されています。
このパッケージは比較的小さなパッケージで、以下のようなクラスが含まれています。
- Filed
- Method
- Constructor
- Modifier
- Array
最初の3つのクラス Filed,Method,Constructor はクラスのメンバーの情報を
取り扱うためのクラスです。指定されたクラスのそれぞれのメンバーの情報を
取り出すことができます。
また、これら3つの共通のスーパークラスとして、インターフェイス Memberが
存在します。
Modifier はメンバーの宣言の修飾子の情報を取り出すためのクラスです。
Arrayは配列の情報を取り扱うためのクラスです。
以上のクラスを利用することで、プログラムの実行中に動的にクラスの情報を
取り扱うことが可能になります。
こうした機能はクラスを設計するエディタなどのアプリケーション
を Java自身で記述するために活用されます。