org.seasar.framework.util.tiger
クラス ReflectionUtil

java.lang.Object
  上位を拡張 org.seasar.framework.util.tiger.ReflectionUtil

public abstract class ReflectionUtil
extends java.lang.Object

Java5のgenericsや可変長を活用する、リフレクションのためのユーティリティです。

作成者:
koichik

コンストラクタの概要
protected ReflectionUtil()
          インスタンスを構築します。
 
メソッドの概要
static
<T> java.lang.Class<T>
forName(java.lang.String className)
          現在のスレッドのコンテキストクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。
static
<T> java.lang.Class<T>
forName(java.lang.String className, java.lang.ClassLoader loader)
          指定されたクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられたClassオブジェクトを返します。
static
<T> java.lang.Class<T>
forNameNoException(java.lang.String className)
          現在のスレッドのコンテキストクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。
static
<T> java.lang.Class<T>
forNameNoException(java.lang.String className, java.lang.ClassLoader loader)
          指定されたクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。
static
<T> java.lang.reflect.Constructor<T>
getConstructor(java.lang.Class<T> clazz, java.lang.Class<?>... argTypes)
          Classオブジェクトが表すクラスの指定されたpublicコンストラクタをリフレクトするConstructorオブジェクトを返します。
static
<T> java.lang.reflect.Constructor<T>
getDeclaredConstructor(java.lang.Class<T> clazz, java.lang.Class<?>... argTypes)
          Classオブジェクトが表すクラスまたはインタフェースの指定されたコンストラクタをリフレクトするConstructorオブジェクトを返します。
static java.lang.reflect.Field getDeclaredField(java.lang.Class<?> clazz, java.lang.String name)
          Classオブジェクトが表すクラスまたはインタフェースの指定された宣言フィールドをリフレクトするFieldオブジェクトを返します。
static java.lang.reflect.Method getDeclaredMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>... argTypes)
          Classオブジェクトが表すクラスまたはインタフェースの指定されたメンバメソッドをリフレクトするMethodオブジェクトを返します。
static java.lang.Class<?> getElementTypeOfCollection(java.lang.reflect.Type parameterizedCollection)
          パラメタ化されたコレクションの要素型を返します。
static java.lang.Class<?> getElementTypeOfCollectionFromFieldType(java.lang.reflect.Field field)
          指定されたフィールドのパラメタ化されたコレクションの要素型を返します。
static java.lang.Class<?> getElementTypeOfCollectionFromParameterType(java.lang.reflect.Method method, int parameterPosition)
          指定されたメソッドの引数型として宣言されているパラメタ化されたコレクションの要素型を返します。
static java.lang.Class<?> getElementTypeOfCollectionFromReturnType(java.lang.reflect.Method method)
          指定されたメソッドの戻り値型として宣言されているパラメタ化されたコレクションの要素型を返します。
static java.lang.Class<?> getElementTypeOfList(java.lang.reflect.Type parameterizedList)
          パラメタ化されたリストの要素型を返します。
static java.lang.Class<?> getElementTypeOfListFromFieldType(java.lang.reflect.Field field)
          指定されたフィールドのパラメタ化されたリストの要素型を返します。
static java.lang.Class<?> getElementTypeOfListFromParameterType(java.lang.reflect.Method method, int parameterPosition)
          指定されたメソッドの引数型として宣言されているパラメタ化されたリストの要素型を返します。
static java.lang.Class<?> getElementTypeOfListFromReturnType(java.lang.reflect.Method method)
          指定されたメソッドの戻り値型として宣言されているパラメタ化されたリストの要素型を返します。
static java.lang.Class<?> getElementTypeOfSet(java.lang.reflect.Type parameterizedSet)
          パラメタ化されたセットの要素型を返します。
static java.lang.Class<?> getElementTypeOfSetFromFieldType(java.lang.reflect.Field field)
          指定されたフィールドのパラメタ化されたセットの要素型を返します。
static java.lang.Class<?> getElementTypeOfSetFromParameterType(java.lang.reflect.Method method, int parameterPosition)
          指定されたメソッドの引数型として宣言されているパラメタ化されたセットの要素型を返します。
static java.lang.Class<?> getElementTypeOfSetFromReturnType(java.lang.reflect.Method method)
          指定されたメソッドの戻り値型として宣言されているパラメタ化されたセットの要素型を返します。
static java.lang.reflect.Field getField(java.lang.Class<?> clazz, java.lang.String name)
          Classオブジェクトが表すクラスまたはインタフェースの指定されたpublicメンバフィールドをリフレクトするFieldオブジェクトを返します。
static java.lang.reflect.Method getMethod(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>... argTypes)
          Classオブジェクトが表すクラスまたはインタフェースの指定されたpublicメンバメソッドをリフレクトするMethodオブジェクトを返します。
static
<T> T
getStaticValue(java.lang.reflect.Field field)
          指定されたオブジェクトについて、Fieldによって表されるstaticフィールドの値を返します。
static
<T> T
getValue(java.lang.reflect.Field field, java.lang.Object target)
          指定されたオブジェクトについて、Fieldによって表されるフィールドの値を返します。
static
<T> T
invoke(java.lang.reflect.Method method, java.lang.Object target, java.lang.Object... args)
          Methodオブジェクトによって表される基本となるメソッドを、指定したオブジェクトに対して指定したパラメータで呼び出します。
static
<T> T
invokeStatic(java.lang.reflect.Method method, java.lang.Object... args)
          Methodオブジェクトによって表される基本となるstaticメソッドを、指定したパラメータで呼び出します。
static
<T> T
newInstance(java.lang.Class<T> clazz)
          指定されたクラスのデフォルトコンストラクタで、クラスの新しいインスタンスを作成および初期化します。
static
<T> T
newInstance(java.lang.reflect.Constructor<T> constructor, java.lang.Object... args)
          指定された初期化パラメータで、コンストラクタの宣言クラスの新しいインスタンスを作成および初期化します。
static void setStaticValue(java.lang.reflect.Field field, java.lang.Object value)
          Fieldオブジェクトによって表されるstaticフィールドを、指定された新しい値に設定します。
static void setValue(java.lang.reflect.Field field, java.lang.Object target, java.lang.Object value)
          Fieldオブジェクトによって表される指定されたオブジェクト引数のフィールドを、指定された新しい値に設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ReflectionUtil

protected ReflectionUtil()
インスタンスを構築します。

メソッドの詳細

forName

public static <T> java.lang.Class<T> forName(java.lang.String className)
                                  throws ClassNotFoundRuntimeException
現在のスレッドのコンテキストクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
className - 要求するクラスの完全修飾名
戻り値:
指定された名前を持つクラスのClassオブジェクト
例外:
ClassNotFoundRuntimeException - クラスが見つからなかった場合
関連項目:
Class.forName(String)

forName

public static <T> java.lang.Class<T> forName(java.lang.String className,
                                             java.lang.ClassLoader loader)
                                  throws ClassNotFoundRuntimeException
指定されたクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられたClassオブジェクトを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
className - 要求するクラスの完全修飾名
loader - クラスのロード元である必要があるクラスローダ
戻り値:
指定された名前を持つクラスのClassオブジェクト
例外:
ClassNotFoundRuntimeException - クラスが見つからなかった場合
関連項目:
Class.forName(String, boolean, ClassLoader)

forNameNoException

public static <T> java.lang.Class<T> forNameNoException(java.lang.String className)
現在のスレッドのコンテキストクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。

クラスが見つからなかった場合はnullを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
className - 要求するクラスの完全修飾名
戻り値:
指定された名前を持つクラスのClassオブジェクト
関連項目:
Class.forName(String)

forNameNoException

public static <T> java.lang.Class<T> forNameNoException(java.lang.String className,
                                                        java.lang.ClassLoader loader)
指定されたクラスローダを使って、 指定された文字列名を持つクラスまたはインタフェースに関連付けられた、 Classオブジェクトを返します。

クラスが見つからなかった場合はnullを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
className - 要求するクラスの完全修飾名
loader - クラスのロード元である必要があるクラスローダ
戻り値:
指定された名前を持つクラスのClassオブジェクト
関連項目:
Class.forName(String)

getConstructor

public static <T> java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<T> clazz,
                                                                  java.lang.Class<?>... argTypes)
                                                       throws NoSuchConstructorRuntimeException
Classオブジェクトが表すクラスの指定されたpublicコンストラクタをリフレクトするConstructorオブジェクトを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
clazz - クラスのClassオブジェクト
argTypes - パラメータ配列
戻り値:
指定されたargTypesと一致するpublicコンストラクタのConstructorオブジェクト
例外:
NoSuchConstructorRuntimeException - 一致するコンストラクタが見つからない場合
関連項目:
Class.getConstructor(Class[])

getDeclaredConstructor

public static <T> java.lang.reflect.Constructor<T> getDeclaredConstructor(java.lang.Class<T> clazz,
                                                                          java.lang.Class<?>... argTypes)
                                                               throws NoSuchConstructorRuntimeException
Classオブジェクトが表すクラスまたはインタフェースの指定されたコンストラクタをリフレクトするConstructorオブジェクトを返します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
clazz - クラスのClassオブジェクト
argTypes - パラメータ配列
戻り値:
指定されたargTypesと一致するコンストラクタのConstructorオブジェクト
例外:
NoSuchConstructorRuntimeException - 一致するコンストラクタが見つからない場合
関連項目:
Class.getDeclaredConstructor(Class[])

getField

public static java.lang.reflect.Field getField(java.lang.Class<?> clazz,
                                               java.lang.String name)
                                        throws NoSuchFieldRuntimeException
Classオブジェクトが表すクラスまたはインタフェースの指定されたpublicメンバフィールドをリフレクトするFieldオブジェクトを返します。

パラメータ:
clazz - クラスのClassオブジェクト
name - フィールド名
戻り値:
nameで指定されたこのクラスのFieldオブジェクト
例外:
NoSuchFieldRuntimeException - 指定された名前のフィールドが見つからない場合
関連項目:
Class.getField(String)

getDeclaredField

public static java.lang.reflect.Field getDeclaredField(java.lang.Class<?> clazz,
                                                       java.lang.String name)
                                                throws NoSuchFieldRuntimeException
Classオブジェクトが表すクラスまたはインタフェースの指定された宣言フィールドをリフレクトするFieldオブジェクトを返します。

パラメータ:
clazz - クラスのClassオブジェクト
name - フィールド名
戻り値:
nameで指定されたこのクラスのFieldオブジェクト
例外:
NoSuchFieldRuntimeException - 指定された名前のフィールドが見つからない場合
関連項目:
Class.getDeclaredField(String)

getMethod

public static java.lang.reflect.Method getMethod(java.lang.Class<?> clazz,
                                                 java.lang.String name,
                                                 java.lang.Class<?>... argTypes)
                                          throws NoSuchMethodRuntimeException
Classオブジェクトが表すクラスまたはインタフェースの指定されたpublicメンバメソッドをリフレクトするMethodオブジェクトを返します。

パラメータ:
clazz - クラスのClassオブジェクト
name - メソッドの名前
argTypes - パラメータのリスト
戻り値:
指定されたnameおよびargTypesと一致するMethodオブジェクト
例外:
NoSuchMethodRuntimeException - 一致するメソッドが見つからない場合
関連項目:
Class.getMethod(String, Class[])

getDeclaredMethod

public static java.lang.reflect.Method getDeclaredMethod(java.lang.Class<?> clazz,
                                                         java.lang.String name,
                                                         java.lang.Class<?>... argTypes)
                                                  throws NoSuchMethodRuntimeException
Classオブジェクトが表すクラスまたはインタフェースの指定されたメンバメソッドをリフレクトするMethodオブジェクトを返します。

パラメータ:
clazz - クラスのClassオブジェクト
name - メソッドの名前
argTypes - パラメータのリスト
戻り値:
指定されたnameおよびargTypesと一致するMethodオブジェクト
例外:
NoSuchMethodRuntimeException - 一致するメソッドが見つからない場合
関連項目:
Class.getDeclaredMethod(String, Class[])

newInstance

public static <T> T newInstance(java.lang.Class<T> clazz)
                     throws InstantiationRuntimeException,
                            IllegalAccessRuntimeException
指定されたクラスのデフォルトコンストラクタで、クラスの新しいインスタンスを作成および初期化します。

型パラメータ:
T - Classオブジェクトが表すクラス
パラメータ:
clazz - クラスを表すClassオブジェクト
戻り値:
このオブジェクトが表すコンストラクタを呼び出すことで作成される新規オブジェクト
例外:
InstantiationRuntimeException - 基本となるコンストラクタを宣言するクラスがabstractクラスを表す場合
IllegalAccessRuntimeException - 実パラメータ数と仮パラメータ数が異なる場合、 プリミティブ引数のラップ解除変換が失敗した場合、 またはラップ解除後、 メソッド呼び出し変換によってパラメータ値を対応する仮パラメータ型に変換できない場合、 このコンストラクタが列挙型に関連している場合
関連項目:
Constructor.newInstance(Object[])

newInstance

public static <T> T newInstance(java.lang.reflect.Constructor<T> constructor,
                                java.lang.Object... args)
                     throws InstantiationRuntimeException,
                            IllegalAccessRuntimeException
指定された初期化パラメータで、コンストラクタの宣言クラスの新しいインスタンスを作成および初期化します。

型パラメータ:
T - コンストラクタの宣言クラス
パラメータ:
constructor - コンストラクタ
args - コンストラクタ呼び出しに引数として渡すオブジェクトの配列
戻り値:
コンストラクタを呼び出すことで作成される新規オブジェクト
例外:
InstantiationRuntimeException - 基本となるコンストラクタを宣言するクラスがabstractクラスを表す場合
IllegalAccessRuntimeException - 実パラメータ数と仮パラメータ数が異なる場合、 プリミティブ引数のラップ解除変換が失敗した場合、 またはラップ解除後、 メソッド呼び出し変換によってパラメータ値を対応する仮パラメータ型に変換できない場合、 このコンストラクタが列挙型に関連している場合
関連項目:
Constructor.newInstance(Object[])

getValue

public static <T> T getValue(java.lang.reflect.Field field,
                             java.lang.Object target)
                  throws IllegalAccessRuntimeException
指定されたオブジェクトについて、Fieldによって表されるフィールドの値を返します。

型パラメータ:
T - フィールドの型
パラメータ:
field - フィールド
target - 表現されるフィールド値の抽出元オブジェクト
戻り値:
オブジェクトobj内で表現される値
例外:
IllegalAccessRuntimeException - 基本となるフィールドにアクセスできない場合
関連項目:
Field.get(Object)

getStaticValue

public static <T> T getStaticValue(java.lang.reflect.Field field)
                        throws IllegalAccessRuntimeException
指定されたオブジェクトについて、Fieldによって表されるstaticフィールドの値を返します。

型パラメータ:
T - フィールドの型
パラメータ:
field - フィールド
戻り値:
staticフィールドで表現される値
例外:
IllegalAccessRuntimeException - 基本となるフィールドにアクセスできない場合
関連項目:
Field.get(Object)

setValue

public static void setValue(java.lang.reflect.Field field,
                            java.lang.Object target,
                            java.lang.Object value)
                     throws IllegalAccessRuntimeException
Fieldオブジェクトによって表される指定されたオブジェクト引数のフィールドを、指定された新しい値に設定します。

パラメータ:
field - フィールド
target - フィールドを変更するオブジェクト
value - 変更中のtargetの新しいフィールド値
例外:
IllegalAccessRuntimeException - 基本となるフィールドにアクセスできない場合
関連項目:
Field.set(Object, Object)

setStaticValue

public static void setStaticValue(java.lang.reflect.Field field,
                                  java.lang.Object value)
                           throws IllegalAccessRuntimeException
Fieldオブジェクトによって表されるstaticフィールドを、指定された新しい値に設定します。

パラメータ:
field - フィールド
value - staticフィールドの新しい値
例外:
IllegalAccessRuntimeException - 基本となるフィールドにアクセスできない場合
関連項目:
Field.set(Object, Object)

invoke

public static <T> T invoke(java.lang.reflect.Method method,
                           java.lang.Object target,
                           java.lang.Object... args)
                throws IllegalAccessRuntimeException,
                       InvocationTargetRuntimeException
Methodオブジェクトによって表される基本となるメソッドを、指定したオブジェクトに対して指定したパラメータで呼び出します。

型パラメータ:
T - メソッドの戻り値の型
パラメータ:
method - メソッド
target - 基本となるメソッドの呼び出し元のオブジェクト
args - メソッド呼び出しに使用される引数
戻り値:
このオブジェクトが表すメソッドを、パラメータargsを使用してobjにディスパッチした結果
例外:
IllegalAccessRuntimeException - このMethodオブジェクトがJava言語アクセス制御を実施し、 基本となるメソッドにアクセスできない場合
InvocationTargetRuntimeException - 基本となるメソッドが例外をスローする場合
関連項目:
Method.invoke(Object, Object[])

invokeStatic

public static <T> T invokeStatic(java.lang.reflect.Method method,
                                 java.lang.Object... args)
                      throws IllegalAccessRuntimeException,
                             InvocationTargetRuntimeException
Methodオブジェクトによって表される基本となるstaticメソッドを、指定したパラメータで呼び出します。

型パラメータ:
T - メソッドの戻り値の型
パラメータ:
method - メソッド
args - メソッド呼び出しに使用される引数
戻り値:
このオブジェクトが表すstaticメソッドを、パラメータargsを使用してディスパッチした結果
例外:
IllegalAccessRuntimeException - このMethodオブジェクトがJava言語アクセス制御を実施し、 基本となるメソッドにアクセスできない場合
InvocationTargetRuntimeException - 基本となるメソッドが例外をスローする場合
関連項目:
Method.invoke(Object, Object[])

getElementTypeOfCollection

public static java.lang.Class<?> getElementTypeOfCollection(java.lang.reflect.Type parameterizedCollection)
パラメタ化されたコレクションの要素型を返します。

パラメータ:
parameterizedCollection - パラメタ化されたコレクションの型
戻り値:
パラメタ化されたコレクションの要素型

getElementTypeOfCollectionFromFieldType

public static java.lang.Class<?> getElementTypeOfCollectionFromFieldType(java.lang.reflect.Field field)
指定されたフィールドのパラメタ化されたコレクションの要素型を返します。

パラメータ:
field - フィールド
戻り値:
指定されたフィールドのパラメタ化されたコレクションの要素型 since 2.4.18 since 2.4.18

getElementTypeOfCollectionFromParameterType

public static java.lang.Class<?> getElementTypeOfCollectionFromParameterType(java.lang.reflect.Method method,
                                                                             int parameterPosition)
指定されたメソッドの引数型として宣言されているパラメタ化されたコレクションの要素型を返します。

パラメータ:
method - メソッド
parameterPosition - パラメタ化されたコレクションが宣言されているメソッド引数の位置
戻り値:
指定されたメソッドの引数型として宣言されているパラメタ化されたコレクションの要素型

getElementTypeOfCollectionFromReturnType

public static java.lang.Class<?> getElementTypeOfCollectionFromReturnType(java.lang.reflect.Method method)
指定されたメソッドの戻り値型として宣言されているパラメタ化されたコレクションの要素型を返します。

パラメータ:
method - メソッド
戻り値:
指定されたメソッドの戻り値型として宣言されているパラメタ化されたコレクションの要素型

getElementTypeOfList

public static java.lang.Class<?> getElementTypeOfList(java.lang.reflect.Type parameterizedList)
パラメタ化されたリストの要素型を返します。

パラメータ:
parameterizedList - パラメタ化されたリストの型
戻り値:
パラメタ化されたリストの要素型

getElementTypeOfListFromFieldType

public static java.lang.Class<?> getElementTypeOfListFromFieldType(java.lang.reflect.Field field)
指定されたフィールドのパラメタ化されたリストの要素型を返します。

パラメータ:
field - フィールド
戻り値:
指定されたフィールドのパラメタ化されたリストの要素型 since 2.4.18 since 2.4.18

getElementTypeOfListFromParameterType

public static java.lang.Class<?> getElementTypeOfListFromParameterType(java.lang.reflect.Method method,
                                                                       int parameterPosition)
指定されたメソッドの引数型として宣言されているパラメタ化されたリストの要素型を返します。

パラメータ:
method - メソッド
parameterPosition - パラメタ化されたリストが宣言されているメソッド引数の位置
戻り値:
指定されたメソッドの引数型として宣言されているパラメタ化されたリストの要素型

getElementTypeOfListFromReturnType

public static java.lang.Class<?> getElementTypeOfListFromReturnType(java.lang.reflect.Method method)
指定されたメソッドの戻り値型として宣言されているパラメタ化されたリストの要素型を返します。

パラメータ:
method - メソッド
戻り値:
指定されたメソッドの戻り値型として宣言されているパラメタ化されたリストの要素型

getElementTypeOfSet

public static java.lang.Class<?> getElementTypeOfSet(java.lang.reflect.Type parameterizedSet)
パラメタ化されたセットの要素型を返します。

パラメータ:
parameterizedSet - パラメタ化されたセットの型
戻り値:
パラメタ化されたセットの要素型

getElementTypeOfSetFromFieldType

public static java.lang.Class<?> getElementTypeOfSetFromFieldType(java.lang.reflect.Field field)
指定されたフィールドのパラメタ化されたセットの要素型を返します。

パラメータ:
field - フィールド
戻り値:
指定されたフィールドのパラメタ化されたセットの要素型 since 2.4.18 since 2.4.18

getElementTypeOfSetFromParameterType

public static java.lang.Class<?> getElementTypeOfSetFromParameterType(java.lang.reflect.Method method,
                                                                      int parameterPosition)
指定されたメソッドの引数型として宣言されているパラメタ化されたセットの要素型を返します。

パラメータ:
method - メソッド
parameterPosition - パラメタ化されたセットが宣言されているメソッド引数の位置
戻り値:
指定されたメソッドの引数型として宣言されているパラメタ化されたセットの要素型

getElementTypeOfSetFromReturnType

public static java.lang.Class<?> getElementTypeOfSetFromReturnType(java.lang.reflect.Method method)
指定されたメソッドの戻り値型として宣言されているパラメタ化されたセットの要素型を返します。

パラメータ:
method - メソッド
戻り値:
指定されたメソッドの戻り値型として宣言されているパラメタ化されたセットの要素型


Copyright © 2004-2014 The Seasar Foundation. All Rights Reserved.