| 
 | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.terasoluna.fw.util.GenericsUtil
public class GenericsUtil
Genericsを扱うためのユーティリティクラス。
| フィールドの概要 | |
|---|---|
| private static org.apache.commons.logging.Log | logログクラス。 | 
| コンストラクタの概要 | |
|---|---|
| GenericsUtil() | |
| メソッドの概要 | ||
|---|---|---|
| protected static
 | checkInterfaceAncestors(java.lang.Class<T> genericClass,
                        java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList,
                        java.lang.Class clazz)インタフェース型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。 | |
| protected static
 | checkParameterizedType(java.lang.reflect.Type type,
                       java.lang.Class<T> genericClass,
                       java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList)Type型をチェックし、ParameterizedTypeかつ、型パラメータを宣言したクラスのサブクラスである場合、リストに追加する。 | |
| protected static
 | getAncestorTypeList(java.lang.Class<T> genericClass,
                    java.lang.Class<? extends T> descendantClass)特定の型から型パラメータを宣言したクラスまでの ParameterizedTypeのリストを取得する。 | |
| protected static java.lang.Class | getRawClass(java.lang.reflect.Type type)引数 typeの実際の型を返却する。 | |
| protected static boolean | isNotTypeVariable(java.lang.reflect.Type type)引数 typeがClass型
 であるか、TypeVariable型かを判定する。 | |
| static
 | resolveParameterizedClass(java.lang.Class<T> genericClass,
                          java.lang.Class<? extends T> descendantClass)クラスの型パラメータの実際の型を取得する。 | |
| static
 | resolveParameterizedClass(java.lang.Class<T> genericClass,
                          java.lang.Class<? extends T> descendantClass,
                          int index)型パラメータの実際の型を取得する。 | |
| protected static java.lang.Class | resolveTypeVariable(java.lang.reflect.Type type,
                    java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList)型パラメータの具体的な Typeを取得する。 | |
| クラス java.lang.Object から継承されたメソッド | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| フィールドの詳細 | 
|---|
private static final org.apache.commons.logging.Log log
| コンストラクタの詳細 | 
|---|
public GenericsUtil()
| メソッドの詳細 | 
|---|
public static <T> java.lang.Class[] resolveParameterizedClass(java.lang.Class<T> genericClass,
                                                              java.lang.Class<? extends T> descendantClass)
                                                   throws java.lang.IllegalArgumentException,
                                                          java.lang.IllegalStateException
WildCardTypeが
 指定されている場合、および、コード中で変数宣言の際に実際の型が
 指定されている場合は取得できない。
 
     public class Descendant extends Generic<String, Integer> {
        ...
     }
     String, Integer]の
 配列が取得できる
   
     public class Descendant extends Generic<String[], Integer> {
        ...
     }
     String[], Integer]の
 配列が取得できる
   
     public class Descendant
         extends Generic<String[], Map<String, Object>> {
        ...
     }
     String[], Map]の
 配列が取得できる
   
     public class Descendant<P, Q> extends Generic<S, T> {
        ...
     }
     
     public class Descendant<P extends String, Q super Bean>
         extends Generic<S, T> {
        ...
     }
     
     Generic<String, Integer> descendant =
         new Generic<String, Integer>();
     
genericTypeからdescendantClassまで
 多世代の継承がある場合も、実際の型を取得することができる。
 
       public class Child<S, T> extends Generic<S, T> {
          ...
       }
       public class GrandChild<S, T> extends Child<S, T> {
          ...
       }
       public class Descendant extends GrandChild<String, Integer> {
          ...
       }
 String, Integer]の
 配列が取得できる
   
genericTypeからdescendantClassまでの
 継承の過程で型パラメータの順番が入れ替わった場合でも、
 genercClassで宣言された順番で実際の型を取得できる。
 
       public class Generic<S, T> {
          ...
       }
       public class Child<A, T, B, S> extends Generic<S, T> {
          ...
       }
       public class Descendant
            extends Generic<Boolean, Integer, Double, String> {
          ...
       }
 String, Integer]の
 配列が取得できる
    
T - 型パラメータ宣言をしたクラスの型。genericClass - 型パラメータ宣言をしたクラス。descendantClass - genericsClassを継承し、
      具体的な型パラメータを指定したクラス。
Classインスタンスの配列。
               順番はgenercClassで宣言された順番である。
java.lang.IllegalArgumentException - 引数genericClassが
      nullの場合。
      引数descendantClassがnullの場合。
java.lang.IllegalStateException - descendantClassの実装で型パラメータが
          具体クラスとして指定されていない場合。
      引数genercClassが型パラメータを宣言したクラスでは
      なかった場合。
public static <T> java.lang.Class resolveParameterizedClass(java.lang.Class<T> genericClass,
                                                            java.lang.Class<? extends T> descendantClass,
                                                            int index)
                                                 throws java.lang.IllegalArgumentException,
                                                        java.lang.IllegalStateException
WildCardTypeが
 指定されている場合、および、コード中で変数宣言の際に実際の型が
 指定されている場合は取得できない。
 
     public class Descendant extends Generic<String, Integer> {
        ...
     }
     StringまたはIntegerが
 取得できる
   
     public class Descendant extends Generic<String[], Integer> {
        ...
     }
     String[]またはIntegerが
 取得できる
   
     public class Descendant
         extends Generic<String[], Map<String, Object>> {
        ...
     }
     String[]またはMap
 が取得できる
   
     public class Descendant<P, Q> extends Generic<S, T> {
        ...
     }
     
     public class Descendant<P extends String, Q super Bean>
         extends Generic<S, T> {
        ...
     }
     
     Generic<String, Integer> descendant =
         new Generic<String, Integer>();
     
genericTypeからdescendantClassまで
 多世代の継承がある場合も、実際の型を取得することができる。
 
       public class Child<S, T> extends Generic<S, T> {
          ...
       }
       public class GrandChild<S, T> extends Child<S, T> {
          ...
       }
       public class Descendant extends GrandChild<String, Integer> {
          ...
       }
 StringまたはInteger
 が取得できる
   
genericTypeからdescendantClassまでの
 継承の過程で型パラメータの順番が入れ替わった場合でも、
 genercClassで宣言された順番で実際の型を取得できる。
 
       public class Generic<S, T> {
          ...
       }
       public class Child<A, T, B, S> extends Generic<S, T> {
          ...
       }
       public class Descendant
            extends Generic<Boolean, Integer, Double, String> {
          ...
       }
 StringまたはInteger
 が取得できる
    
T - 型パラメータ宣言をしたクラスの型。genericClass - 型パラメータ宣言をしたクラス。descendantClass - genericsClassを継承し、
      具体的な型パラメータを指定したクラス。index - 実際の型を取得する型パラメータの宣言順序。
Classインスタンス。
java.lang.IllegalArgumentException - 引数genericClassが
      nullの場合。
      引数descendantClassがnullの場合。
      引数indexが0より小さい、または、
      宣言された型パラメータ数以上の場合。
java.lang.IllegalStateException - descendantClassの実装で型パラメータが
          具体クラスとして指定されていない場合。
      引数genercClassが型パラメータを宣言したクラスでは
      なかった場合。
protected static <T> java.util.List<java.lang.reflect.ParameterizedType> getAncestorTypeList(java.lang.Class<T> genericClass,
                                                                                             java.lang.Class<? extends T> descendantClass)
                                                                                  throws java.lang.IllegalStateException
ParameterizedTypeのリストを取得する。
T - 型パラメータ宣言をしたクラスの型。genericClass - 型パラメータ宣言をしたクラス。descendantClass - genericsClassを継承し、
      具体的な型パラメータを指定したクラス。
ParameterizedTypeのリスト。
java.lang.IllegalStateException - descendantClassの
      実装で型パラメータが具体クラスとして指定されていない場合。
      引数genercClassが型パラメータを宣言したクラスでは
      なかった場合。
protected static <T> boolean checkInterfaceAncestors(java.lang.Class<T> genericClass,
                                                     java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList,
                                                     java.lang.Class clazz)
ParameterizedTypeのリストを取得する。
T - 型パラメータを宣言したクラスの型。genericClass - 型パラメータを宣言したクラス。ancestorTypeList - ParameterizedTypeを
      追加するリスト。clazz - 検査対象のインタフェース型。
true。
      見つからなかった場合はfalse。
protected static <T> boolean checkParameterizedType(java.lang.reflect.Type type,
                                                    java.lang.Class<T> genericClass,
                                                    java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList)
Type型をチェックし、ParameterizedType
 かつ、型パラメータを宣言したクラスのサブクラスである場合、リストに追加する。
T - 型パラメータを宣言したクラスの型。type - 検査対象の型。genericClass - 型パラメータを宣言したクラス。ancestorTypeList - ParameterizedTypeを
      追加するリスト。
typeが型パラメータを宣言したクラスと同じクラスの場合。
protected static java.lang.Class resolveTypeVariable(java.lang.reflect.Type type,
                                                     java.util.List<java.lang.reflect.ParameterizedType> ancestorTypeList)
                                              throws java.lang.IllegalStateException
Typeを取得する。
type - 解決する必要のあるTypeインスタンス。ancestorTypeList - typeの具体的な型が
      宣言されている可能性のあるParameterizedTypeのリスト。
java.lang.IllegalStateException - 引数typeが
      Class型、および、
      TypeVariable型ではない場合。
      引数typeがメソッド、
      または、コンストラクタで宣言されている場合。
      引数typeの実際の型がClassではない
      (ワイルドカード、配列)場合。
protected static boolean isNotTypeVariable(java.lang.reflect.Type type)
                                    throws java.lang.IllegalStateException
typeがClass型
 であるか、TypeVariable型かを判定する。
type - Typeインスタンス。
typeが
      Class, ParameterizedType, GenericArrayTypeの場合
        true。
      引数typeがTypeVariableの場合
        false。
java.lang.IllegalStateException - 引数typeが
      Class、ParameterizedType、
      GenericArrayType、TypeVariableの
      いずれでもない場合。
protected static java.lang.Class getRawClass(java.lang.reflect.Type type)
                                      throws java.lang.IllegalStateException
typeの実際の型を返却する。
type - Typeインスタンス。
Classインスタンス。
java.lang.IllegalStateException - 引数typeが
      Class、ParameterizedType、
      GenericArrayTypeのいずれでもない場合。| 
 | ||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||