Java > リフレクション

更新日 2014-12-14
広告
リフレクションを利用することで、クラスのフィールド変数にアクセスしたり、メソッドを呼び出したりできます。

ジェネリクス型を調べる方法

あるクラスのフィールド変数がListやSetなどの場合、そのgenerics型を知りたい場合を調べることができます。以下はサンプルコードです。クラス(obj)が、"dataList"という名前のList型変数を持つ場合の例です。
  Class c = obj.getClass();
  Field field = c.getField("dataList");
  ParameterizedType paramType = (ParameterizedType) field.getGenericType();
  Class<?> paramCls = (Class) paramType.getActualTypeArguments()[0];

  if (Integer.class.equals(paramCls)) {
    // do something
  } else if {
  }

変数fieldの型は java.lang.reflect.Field です。genericsの型は、paramCls変数に代入されます。最後に、ジェネリクス型がInteger型かどうかで判定しています。

上記プログラムは,クラスで定義しているフィールド変数が、generics型を指定していない場合に、ClassCastExceptionを投げます。

広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system