jp.terasoluna.fw.util
クラス GenericsUtil

java.lang.Object
  上位を拡張 jp.terasoluna.fw.util.GenericsUtil

public class GenericsUtil
extends Object

Genericsを扱うためのユーティリティクラス。


コンストラクタの概要
GenericsUtil()
           
 
メソッドの概要
protected static
<T> boolean
checkInterfaceAncestors(Class<T> genericClass, List<ParameterizedType> ancestorTypeList, Class clazz)
          インタフェース型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。
protected static
<T> boolean
checkParameterizedType(Type type, Class<T> genericClass, List<ParameterizedType> ancestorTypeList)
          Type型をチェックし、ParameterizedType かつ、型パラメータを宣言したクラスのサブクラスである場合、リストに追加する。
protected static
<T> List<ParameterizedType>
getAncestorTypeList(Class<T> genericClass, Class<? extends T> descendantClass)
          特定の型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。
protected static Class getRawClass(Type type)
          引数typeの実際の型を返却する。
protected static boolean isNotTypeVariable(Type type)
          引数typeClass型 であるか、TypeVariable型かを判定する。
static
<T> Class[]
resolveParameterizedClass(Class<T> genericClass, Class<? extends T> descendantClass)
          クラスの型パラメータの実際の型を取得する。
static
<T> Class
resolveParameterizedClass(Class<T> genericClass, Class<? extends T> descendantClass, int index)
          型パラメータの実際の型を取得する。
protected static Class resolveTypeVariable(Type type, List<ParameterizedType> ancestorTypeList)
          型パラメータの具体的なTypeを取得する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

GenericsUtil

public GenericsUtil()
メソッドの詳細

resolveParameterizedClass

public static <T> Class[] resolveParameterizedClass(Class<T> genericClass,
                                                    Class<? extends T> descendantClass)
                                         throws IllegalArgumentException,
                                                IllegalStateException
クラスの型パラメータの実際の型を取得する。

実際の型の取得の可否
このクラスで実際の型を取得できるのは、クラス宣言で実際の型が 指定されている場合である。 クラス宣言で実際の型が指定されていない場合、 クラス宣言でWildCardTypeが 指定されている場合、および、コード中で変数宣言の際に実際の型が 指定されている場合は取得できない。

多世代継承の場合
genericTypeからdescendantClassまで 多世代の継承がある場合も、実際の型を取得することができる。

型パラメータの順番が変更された場合
genericTypeからdescendantClassまでの 継承の過程で型パラメータの順番が入れ替わった場合でも、 genercClassで宣言された順番で実際の型を取得できる。

型パラメータ:
T - 型パラメータ宣言をしたクラスの型。
パラメータ:
genericClass - 型パラメータ宣言をしたクラス。
descendantClass - genericsClassを継承し、 具体的な型パラメータを指定したクラス。
戻り値:
実際の型を表すClassインスタンスの配列。 順番はgenercClassで宣言された順番である。
例外:
IllegalArgumentException - 引数genericClassnullの場合。 引数descendantClassnullの場合。
IllegalStateException - descendantClassの実装で型パラメータが 具体クラスとして指定されていない場合。 引数genercClassが型パラメータを宣言したクラスでは なかった場合。

resolveParameterizedClass

public static <T> Class resolveParameterizedClass(Class<T> genericClass,
                                                  Class<? extends T> descendantClass,
                                                  int index)
                                       throws IllegalArgumentException,
                                              IllegalStateException
型パラメータの実際の型を取得する。

実際の型の取得の可否
このクラスで実際の型を取得できるのは、クラス宣言で実際の型が 指定されている場合である。 クラス宣言で実際の型が指定されていない場合、 クラス宣言でWildCardTypeが 指定されている場合、および、コード中で変数宣言の際に実際の型が 指定されている場合は取得できない。

多世代継承の場合
genericTypeからdescendantClassまで 多世代の継承がある場合も、実際の型を取得することができる。

型パラメータの順番が変更された場合
genericTypeからdescendantClassまでの 継承の過程で型パラメータの順番が入れ替わった場合でも、 genercClassで宣言された順番で実際の型を取得できる。

型パラメータ:
T - 型パラメータ宣言をしたクラスの型。
パラメータ:
genericClass - 型パラメータ宣言をしたクラス。
descendantClass - genericsClassを継承し、 具体的な型パラメータを指定したクラス。
index - 実際の型を取得する型パラメータの宣言順序。
戻り値:
実際の型を表すClassインスタンス。
例外:
IllegalArgumentException - 引数genericClassnullの場合。 引数descendantClassnullの場合。 引数index0より小さい、または、 宣言された型パラメータ数以上の場合。
IllegalStateException - descendantClassの実装で型パラメータが 具体クラスとして指定されていない場合。 引数genercClassが型パラメータを宣言したクラスでは なかった場合。

getAncestorTypeList

protected static <T> List<ParameterizedType> getAncestorTypeList(Class<T> genericClass,
                                                                 Class<? extends T> descendantClass)
                                                      throws IllegalStateException
特定の型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。

型パラメータ:
T - 型パラメータ宣言をしたクラスの型。
パラメータ:
genericClass - 型パラメータ宣言をしたクラス。
descendantClass - genericsClassを継承し、 具体的な型パラメータを指定したクラス。
戻り値:
特定の型から型パラメータを宣言したクラスまでの ParameterizedTypeのリスト。
例外:
IllegalStateException - descendantClassの 実装で型パラメータが具体クラスとして指定されていない場合。 引数genercClassが型パラメータを宣言したクラスでは なかった場合。

checkInterfaceAncestors

protected static <T> boolean checkInterfaceAncestors(Class<T> genericClass,
                                                     List<ParameterizedType> ancestorTypeList,
                                                     Class clazz)
インタフェース型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。

型パラメータ:
T - 型パラメータを宣言したクラスの型。
パラメータ:
genericClass - 型パラメータを宣言したクラス。
ancestorTypeList - ParameterizedTypeを 追加するリスト。
clazz - 検査対象のインタフェース型。
戻り値:
型パラメータを宣言したクラスが見つかった場合はtrue。 見つからなかった場合はfalse

checkParameterizedType

protected static <T> boolean checkParameterizedType(Type type,
                                                    Class<T> genericClass,
                                                    List<ParameterizedType> ancestorTypeList)
Type型をチェックし、ParameterizedType かつ、型パラメータを宣言したクラスのサブクラスである場合、リストに追加する。

型パラメータ:
T - 型パラメータを宣言したクラスの型。
パラメータ:
type - 検査対象の型。
genericClass - 型パラメータを宣言したクラス。
ancestorTypeList - ParameterizedTypeを 追加するリスト。
戻り値:
typeが型パラメータを宣言したクラスと同じクラスの場合。

resolveTypeVariable

protected static Class resolveTypeVariable(Type type,
                                           List<ParameterizedType> ancestorTypeList)
                                    throws IllegalStateException
型パラメータの具体的なTypeを取得する。

パラメータ:
type - 解決する必要のあるTypeインスタンス。
ancestorTypeList - typeの具体的な型が 宣言されている可能性のあるParameterizedTypeのリスト。
戻り値:
実行時の型変数。
例外:
IllegalStateException - 引数typeClass型、および、 TypeVariable型ではない場合。 引数typeがメソッド、 または、コンストラクタで宣言されている場合。 引数typeの実際の型がClassではない (ワイルドカード、配列)場合。

isNotTypeVariable

protected static boolean isNotTypeVariable(Type type)
                                    throws IllegalStateException
引数typeClass型 であるか、TypeVariable型かを判定する。

パラメータ:
type - Typeインスタンス。
戻り値:
引数typeClass, ParameterizedType, GenericArrayTypeの場合 true。 引数typeTypeVariableの場合 false
例外:
IllegalStateException - 引数typeClassParameterizedTypeGenericArrayTypeTypeVariableの いずれでもない場合。

getRawClass

protected static Class getRawClass(Type type)
                            throws IllegalStateException
引数typeの実際の型を返却する。

パラメータ:
type - Typeインスタンス。
戻り値:
Classインスタンス。
例外:
IllegalStateException - 引数typeClassParameterizedTypeGenericArrayTypeのいずれでもない場合。


Copyright © 2011. All Rights Reserved.