Java 入門

ホーム > リフレクション > リフレクション ~ オブジェクトに関連する Class オブジェクトの取得

リフレクション ~ オブジェクトに関連する Class オブジェクトの取得

オブジェクトに関連する Class オブジェクトの取得

さて、繰り返しになりますがあるオブジェクトの実行時の型情報は、 Class オブジェクトとして取得できます。

これは getClass() メソッドで取得できます。 Object クラスに getClass() メソッドがあるので、 どのオブジェクトに対しても getClass メソッドを呼び出すことができ、 Class オブジェクトを取得することができます。

実際に Class オブジェクトを利用する例を見てください。

まず、 Employee (従業員) クラスを定義しましょう。

package com.keicode.java.test;

public class Employee {
  
  String fname;
  String lname;
  
  public Employee(String fname, String lname){
    this.fname = fname;
    this.lname = lname;
  }
  
  public String getFirstName(){
    return fname;
  }
  
  public String getLastName(){
    return lname;
  }
  
}

次のテストプラグラムでは、この Employee オブジェクトを作成して、そのオブジェクトからオブジェクトのクラス名(文字列)、メソッド名、 そしてそのメソッドの引数を調べて出力します。

package com.keicode.java.test;

import java.lang.reflect.Method;

public class ReflectionTestApp1 {
  
  public static void main(String[] args) {    
    Employee e = new Employee("Ichiro""Suzuki");
    Class<? extends Employee> c = e.getClass();
    
    System.out.println(c.getName());  
    
    for(Method m : c.getMethods()){
      System.out.println(m.getName());
      
      System.out.println("(");
      for(Class<?> p : m.getParameterTypes()){
        System.out.println"\t" + p.getName());
      }
      System.out.println(")");
    }
  }

}

このコードを実行すると、次の結果を得ました。

com.keicode.java.test.Employee
getFirstName
(
)
getLastName
(
)
wait
(
	long
)
wait
(
	long
	int
)
wait
(
)
hashCode
(
)
getClass
(
)
equals
(
	java.lang.Object
)
toString
(
)
notify
(
)
notifyAll
(
)

この例では、 次の箇所で Employee オブジェクトを作成し、 次に getClass メソッドを使ってそのオブジェクトに関連付けされた Class オブジェクトを取得しています。

    Employee e = new Employee("Ichiro""Suzuki");
    Class<? extends Employee> c = e.getClass();

Class オブジェクトの getName メソッドは com.keicode.java.test.Employee という文字列を返しています。 getMethods では Method の配列が返され、それによってそのオブジェクトで呼び出せるメソッド (及びパラメータ) が確認できています。

» クラス名からの Class オブジェクトの取得

ホーム > リフレクション > リフレクション ~オブジェクトに関連する Class オブジェクトの取得