クラスの情報を取り扱う

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