クラス ReflectionUtils
内部使用のみを目的としています。
- 導入:
- 1.2.2
- 作成者:
- Juergen Hoeller, Rob Harrop, Rod Johnson, Costin Leau, Sam Brannen, Chris Beams
ネストされたクラスのサマリー
修飾子と型クラス説明static interface
階層内の各フィールドで呼び出されるコールバックインターフェース。static interface
オプションでフィールドコールバックによって操作されるフィールドをフィルターするために使用されるコールバック。static interface
各メソッドで実行するアクション。static interface
オプションでメソッドコールバックによって操作されるメソッドをフィルターするために使用されるコールバック。フィールドサマリー
修飾子と型フィールド説明static final ReflectionUtils.FieldFilter
すべての非静的、非 final フィールドに一致する事前作成済みの FieldFilter。static final ReflectionUtils.MethodFilter
java.lang.Object
で宣言されていないすべての非ブリッジ非合成メソッドに一致するビルド済みのReflectionUtils.MethodFilter
。コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明static <T> ConstructorSE<T>
accessibleConstructor
(ClassSE<T> clazz, ClassSE<?>... parameterTypes) 指定されたクラスとパラメーターのアクセス可能なコンストラクターを取得します。static void
内部メソッド / フィールドキャッシュをクリアします。static boolean
declaresException
(MethodSE method, ClassSE<?> exceptionType) 指定されたメソッドが指定された例外を明示的に宣言するか、そのスーパークラスの 1 つを明示的に宣言するかを決定します。つまり、その型の例外はリフレクション呼び出し内でそのまま伝播できます。static void
doWithFields
(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc) ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。static void
doWithFields
(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc, ReflectionUtils.FieldFilter ff) ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。static void
doWithLocalFields
(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc) 指定されたクラスでローカルに宣言されたすべてのフィールドで指定されたコールバックを呼び出します。static void
doWithLocalMethods
(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc) 指定されたクラスのすべての一致するメソッドに対して、ローカルに宣言されたメソッドまたはそれに相当するメソッド(指定されたクラスが実装する Java 8 ベースのインターフェースのデフォルトメソッドなど)で指定されたコールバック操作を実行します。static void
doWithMethods
(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc) 指定されたクラスとスーパークラスのすべての一致するメソッドで指定されたコールバック操作を実行します。static void
doWithMethods
(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc, ReflectionUtils.MethodFilter mf) 指定されたクラスとスーパークラス(または指定されたインターフェースとスーパーインターフェース)のすべての一致するメソッドで、指定されたコールバック操作を実行します。static FieldSE
static FieldSE
static FieldSE
findFieldIgnoreCase
(ClassSE<?> clazz, StringSE name) static MethodSE
findMethod
(ClassSE<?> clazz, StringSE name) 指定された名前でパラメーターなしで、指定されたクラスでMethod
SE を見つけようとします。static MethodSE
findMethod
(ClassSE<?> clazz, StringSE name, ClassSE<?>... paramTypes) 指定された名前とパラメーター型で、指定されたクラスでMethod
SE を見つけようとします。static MethodSE[]
getAllDeclaredMethods
(ClassSE<?> leafClass) リーフクラスおよびすべてのスーパークラスで宣言されたすべてのメソッドを取得します。static MethodSE[]
getDeclaredMethods
(ClassSE<?> clazz) 新しいメソッドインスタンスを回避するためにローカルキャッシュを使用するClass.getDeclaredMethods()
のバリアント。static ObjectSE
指定されたtarget object
SE で提供されたfield object
SE によって表されるフィールドを取得します。static MethodSE[]
getUniqueDeclaredMethods
(ClassSE<?> leafClass) リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。static MethodSE[]
getUniqueDeclaredMethods
(ClassSE<?> leafClass, ReflectionUtils.MethodFilter mf) リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。static void
指定された呼び出しターゲット例外を処理します。static void
指定されたリフレクション例外を処理します。static ObjectSE
invokeMethod
(MethodSE method, ObjectSE target) 引数なしで指定されたターゲットオブジェクトに対して指定されたMethod
SE を呼び出します。static ObjectSE
invokeMethod
(MethodSE method, ObjectSE target, ObjectSE... args) 指定された引数を使用して、指定されたターゲットオブジェクトに対して指定されたMethod
SE を呼び出します。static boolean
isCglibRenamedMethod
(MethodSE renamedMethod) パターン "CGLIB$methodName$0" に従って、指定されたメソッドが CGLIB の「名前変更済み」メソッドであるかどうかを判別します。static boolean
isEqualsMethod
(MethodSE method) 指定されたメソッドが「等しい」メソッドであるかどうかを判別します。static boolean
isHashCodeMethod
(MethodSE method) 指定されたメソッドが "hashCode" メソッドであるかどうかを判断します。static boolean
isObjectMethod
(MethodSE method) 指定されたメソッドが元々Object
SE によって宣言されているかどうかを判別します。static boolean
isPublicStaticFinal
(FieldSE field) 指定されたフィールドが "public static final" 定数かどうかを判別します。static boolean
isToStringMethod
(MethodSE method) 指定されたメソッドが "toString" メソッドであるかどうかを判断します。static void
makeAccessible
(ConstructorSE<?> ctor) 指定されたコンストラクターをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static void
makeAccessible
(FieldSE field) 指定されたフィールドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static void
makeAccessible
(MethodSE method) 指定されたメソッドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static void
rethrowException
(ThrowableSE throwable) おそらくInvocationTargetException
SE のターゲット例外である、指定されたexception
SE を再スローします。static void
おそらくInvocationTargetException
SE のターゲット例外である、指定されたexception
SE を再スローします。static void
static void
shallowCopyFieldState
(ObjectSE src, ObjectSE dest) 送信元オブジェクトと送信先(同じクラスまたはサブクラスでなければならない)を指定して、継承されたフィールドを含むすべてのフィールドをコピーします。
フィールドの詳細
USER_DECLARED_METHODS
java.lang.Object
で宣言されていないすべての非ブリッジ非合成メソッドに一致するビルド済みのReflectionUtils.MethodFilter
。- 導入:
- 3.0.5
COPYABLE_FIELDS
すべての非静的、非 final フィールドに一致する事前作成済みの FieldFilter。
コンストラクターの詳細
ReflectionUtils
public ReflectionUtils()
メソッドの詳細
handleReflectionException
指定されたリフレクション例外を処理します。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合、またはメソッドまたはフィールドへのアクセス中にエラーが発生した場合にのみ呼び出す必要があります。
このような根本原因を持つ InvocationTargetException の場合、基になる RuntimeException またはエラーをスローします。適切なメッセージを含む IllegalStateException またはそれ以外の場合は UndeclaredThrowableException をスローします。
- パラメーター:
ex
- 処理するリフレクション例外
handleInvocationTargetException
指定された呼び出しターゲット例外を処理します。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合にのみ呼び出す必要があります。そのような根本原因の場合、基になる RuntimeException またはエラーをスローします。そうでない場合は、UndeclaredThrowableException をスローします。
- パラメーター:
ex
- 処理する呼び出しターゲット例外
rethrowRuntimeException
おそらくInvocationTargetException
SE のターゲット例外である、指定されたexception
SE を再スローします。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合にのみ呼び出す必要があります。必要に応じて、
RuntimeException
SE またはError
SE への基になる例外キャストを再スローします。そうでなければ、UndeclaredThrowableException
SE をスローします。- パラメーター:
ex
- 再スローの例外- 例外:
RuntimeExceptionSE
- 再スローされた例外
rethrowException
おそらくInvocationTargetException
SE のターゲット例外である、指定されたexception
SE を再スローします。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合にのみ呼び出す必要があります。必要に応じて、基になる例外を
Exception
SE またはError
SE にキャストし直します。そうでなければ、UndeclaredThrowableException
SE をスローします。- パラメーター:
throwable
- 再スローの例外- 例外:
ExceptionSE
- 再スローされた例外 (チェック済み例外の場合)
accessibleConstructor
public static <T> ConstructorSE<T> accessibleConstructor(ClassSE<T> clazz, ClassSE<?>... parameterTypes) throws NoSuchMethodExceptionSE 指定されたクラスとパラメーターのアクセス可能なコンストラクターを取得します。- パラメーター:
clazz
- チェックするクラズparameterTypes
- 目的のコンストラクターのパラメーター型- 戻り値:
- コンストラクター参照
- 例外:
NoSuchMethodExceptionSE
- そのようなコンストラクターが存在しない場合- 導入:
- 5.0
makeAccessible
指定されたコンストラクターをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。setAccessible(true)
メソッドは、不必要な競合を避けるために、実際に必要な場合にのみ呼び出されます。- パラメーター:
ctor
- アクセス可能にするコンストラクター- 関連事項:
findMethod
指定された名前でパラメーターなしで、指定されたクラスでMethod
SE を見つけようとします。Object
までのすべてのスーパークラスを検索します。Method
SE が見つからない場合、null
を返します。- パラメーター:
clazz
- イントロスペクトするクラスname
- メソッドの名前- 戻り値:
- Method オブジェクト。見つからない場合は
null
findMethod
@Nullable public static MethodSE findMethod(ClassSE<?> clazz, StringSE name, @Nullable ClassSE<?>... paramTypes) 指定された名前とパラメーター型で、指定されたクラスでMethod
SE を見つけようとします。Object
までのすべてのスーパークラスを検索します。Method
SE が見つからない場合、null
を返します。- パラメーター:
clazz
- イントロスペクトするクラスname
- メソッドの名前paramTypes
- メソッドのパラメーター型 (署名を示すnull
の場合があります)- 戻り値:
- Method オブジェクト。見つからない場合は
null
invokeMethod
引数なしで指定されたターゲットオブジェクトに対して指定されたMethod
SE を呼び出します。静的Method
SE を呼び出す場合、ターゲットオブジェクトはnull
になります。スローされた例外は、
handleReflectionException(java.lang.Exception)
の呼び出しを介して処理されます。- パラメーター:
method
- 呼び出すメソッドtarget
- メソッドを呼び出すターゲットオブジェクト- 戻り値:
- 呼び出し結果(ある場合)
- 関連事項:
invokeMethod
@Nullable public static ObjectSE invokeMethod(MethodSE method, @Nullable ObjectSE target, @Nullable ObjectSE... args) 指定された引数を使用して、指定されたターゲットオブジェクトに対して指定されたMethod
SE を呼び出します。静的Method
SE を呼び出す場合、ターゲットオブジェクトはnull
になります。スローされた例外は、
handleReflectionException(java.lang.Exception)
の呼び出しを介して処理されます。- パラメーター:
method
- 呼び出すメソッドtarget
- メソッドを呼び出すターゲットオブジェクトargs
- 呼び出し引数 (null
の場合があります)- 戻り値:
- 呼び出し結果(ある場合)
declaresException
指定されたメソッドが指定された例外を明示的に宣言するか、そのスーパークラスの 1 つを明示的に宣言するかを決定します。つまり、その型の例外はリフレクション呼び出し内でそのまま伝播できます。- パラメーター:
method
- 宣言メソッドexceptionType
- スローする例外- 戻り値:
- 例外をそのままスローできる場合は
true
。false
(ラップする必要がある場合)
doWithLocalMethods
指定されたクラスのすべての一致するメソッドに対して、ローカルに宣言されたメソッドまたはそれに相当するメソッド(指定されたクラスが実装する Java 8 ベースのインターフェースのデフォルトメソッドなど)で指定されたコールバック操作を実行します。- パラメーター:
clazz
- イントロスペクトするクラスmc
- 各メソッドに対して呼び出すコールバック- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合- 導入:
- 4.2
- 関連事項:
doWithMethods
指定されたクラスとスーパークラスのすべての一致するメソッドで指定されたコールバック操作を実行します。ReflectionUtils.MethodFilter
によって除外されない限り、サブクラスとスーパークラスで発生する同じ名前のメソッドが 2 回表示されます。- パラメーター:
clazz
- イントロスペクトするクラスmc
- 各メソッドに対して呼び出すコールバック- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合- 関連事項:
doWithMethods
public static void doWithMethods(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc, @Nullable ReflectionUtils.MethodFilter mf) 指定されたクラスとスーパークラス(または指定されたインターフェースとスーパーインターフェース)のすべての一致するメソッドで、指定されたコールバック操作を実行します。指定された
ReflectionUtils.MethodFilter
によって除外されない限り、サブクラスとスーパークラスで発生する同じ名前のメソッドが 2 回表示されます。- パラメーター:
clazz
- イントロスペクトするクラスmc
- 各メソッドに対して呼び出すコールバックmf
- コールバックを適用するメソッドを決定するフィルター- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
getAllDeclaredMethods
リーフクラスおよびすべてのスーパークラスで宣言されたすべてのメソッドを取得します。リーフクラスメソッドが最初に含まれます。- パラメーター:
leafClass
- イントロスペクトするクラス- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
getUniqueDeclaredMethods
リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。リーフクラスメソッドが最初に含まれ、スーパークラス階層を走査するときに、すでに含まれているメソッドと一致するシグネチャーで見つかったメソッドはすべて除外されます。- パラメーター:
leafClass
- イントロスペクトするクラス- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
getUniqueDeclaredMethods
public static MethodSE[] getUniqueDeclaredMethods(ClassSE<?> leafClass, @Nullable ReflectionUtils.MethodFilter mf) リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。リーフクラスメソッドが最初に含まれ、スーパークラス階層を走査するときに、すでに含まれているメソッドと一致するシグネチャーで見つかったメソッドはすべて除外されます。- パラメーター:
leafClass
- イントロスペクトするクラスmf
- 考慮する方法を決定するフィルター- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合- 導入:
- 5.2
getDeclaredMethods
新しいメソッドインスタンスを回避するためにローカルキャッシュを使用するClass.getDeclaredMethods()
のバリアント。さらに、ローカルに実装されたインターフェースからの Java 8 デフォルトメソッドも含まれています。- パラメーター:
clazz
- イントロスペクトするクラス- 戻り値:
- メソッドのキャッシュされた配列
- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合- 導入:
- 5.2
- 関連事項:
isEqualsMethod
指定されたメソッドが「等しい」メソッドであるかどうかを判別します。isHashCodeMethod
指定されたメソッドが "hashCode" メソッドであるかどうかを判断します。- 関連事項:
isToStringMethod
指定されたメソッドが "toString" メソッドであるかどうかを判断します。- 関連事項:
isObjectMethod
指定されたメソッドが元々Object
SE によって宣言されているかどうかを判別します。isCglibRenamedMethod
パターン "CGLIB$methodName$0" に従って、指定されたメソッドが CGLIB の「名前変更済み」メソッドであるかどうかを判別します。- パラメーター:
renamedMethod
- チェックする方法
makeAccessible
指定されたメソッドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。setAccessible(true)
メソッドは、不必要な競合を避けるために、実際に必要な場合にのみ呼び出されます。- パラメーター:
method
- アクセス可能にする方法- 関連事項:
findField
- パラメーター:
clazz
- イントロスペクトするクラスname
- フィールドの名前- 戻り値:
- 対応する Field オブジェクト、または見つからない場合は
null
findField
@Nullable public static FieldSE findField(ClassSE<?> clazz, @Nullable StringSE name, @Nullable ClassSE<?> type) - パラメーター:
clazz
- イントロスペクトするクラスname
- フィールドの名前 (型が指定されている場合、null
になる場合があります)type
- フィールドの型 (名前が指定されている場合はnull
になる場合があります)- 戻り値:
- 対応する Field オブジェクト、または見つからない場合は
null
findFieldIgnoreCase
- パラメーター:
clazz
- イントロスペクトするクラスname
- フィールドの名前 (大文字 / 小文字は無視されます)- 戻り値:
- 対応する Field オブジェクト、または見つからない場合は
null
- 導入:
- 6.1
setField
指定されたターゲットオブジェクトSE上の指定されたフィールドオブジェクトSEによって表されるフィールドを、指定されたvalue
に設定します。Field.set(Object, Object)
SE のセマンティクスに従って、基礎となるフィールドにプリミティブ型がある場合、新しい値は自動的にラップ解除されます。このメソッドは、
static final
フィールドの設定をサポートしていません。スローされた例外は、
handleReflectionException(Exception)
の呼び出しを介して処理されます。- パラメーター:
field
- 設定するフィールドtarget
- フィールドを設定する対象オブジェクト (または静的フィールドの場合はnull
)value
- 設定する値 (null
の場合があります)
getField
指定されたtarget object
SE で提供されたfield object
SE によって表されるフィールドを取得します。Field.get(Object)
SE のセマンティクスに従って、基になるフィールドにプリミティブ型がある場合、戻り値は自動的にラップされます。スローされた例外は、
handleReflectionException(Exception)
の呼び出しを介して処理されます。- パラメーター:
field
- 取得するフィールドtarget
- フィールドを取得するターゲットオブジェクト (または静的フィールドの場合はnull
)- 戻り値:
- フィールドの現在の値
doWithLocalFields
指定されたクラスでローカルに宣言されたすべてのフィールドで指定されたコールバックを呼び出します。- パラメーター:
clazz
- 分析するターゲットクラスfc
- 各フィールドに対して呼び出すコールバック- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合- 導入:
- 4.2
- 関連事項:
doWithFields
ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。- パラメーター:
clazz
- 分析するターゲットクラスfc
- 各フィールドに対して呼び出すコールバック- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
doWithFields
public static void doWithFields(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc, @Nullable ReflectionUtils.FieldFilter ff) ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。- パラメーター:
clazz
- 分析するターゲットクラスfc
- 各フィールドに対して呼び出すコールバックff
- コールバックを適用するフィールドを決定するフィルター- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
shallowCopyFieldState
送信元オブジェクトと送信先(同じクラスまたはサブクラスでなければならない)を指定して、継承されたフィールドを含むすべてのフィールドをコピーします。引数なしの public コンストラクターを持つオブジェクトで動作するように設計されています。- 例外:
IllegalStateExceptionSE
- イントロスペクションが失敗した場合
isPublicStaticFinal
指定されたフィールドが "public static final" 定数かどうかを判別します。- パラメーター:
field
- チェックするフィールド
makeAccessible
指定されたフィールドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。setAccessible(true)
メソッドは、不必要な競合を避けるために、実際に必要な場合にのみ呼び出されます。- パラメーター:
field
- アクセス可能にするフィールド- 関連事項:
clearCache
public static void clearCache()内部メソッド / フィールドキャッシュをクリアします。- 導入:
- 4.2.4