クラス 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.MethodFilterjava.lang.Objectで宣言されていないすべての非ブリッジ非合成メソッドに一致するビルド済みのReflectionUtils.MethodFilter。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明static <T> ConstructorSE<T>accessibleConstructor(ClassSE<T> clazz, ClassSE<?>... parameterTypes) 指定されたクラスとパラメーターのアクセス可能なコンストラクターを取得します。static void内部メソッド / フィールドキャッシュをクリアします。static booleandeclaresException(MethodSE method, ClassSE<?> exceptionType) 指定されたメソッドが指定された例外を明示的に宣言するか、そのスーパークラスの 1 つを明示的に宣言するかを決定します。つまり、その型の例外はリフレクション呼び出し内でそのまま伝播できます。static voiddoWithFields(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc) ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。static voiddoWithFields(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc, ReflectionUtils.FieldFilter ff) ターゲットクラスのすべてのフィールドで指定されたコールバックを呼び出し、クラス階層を上ってすべての宣言されたフィールドを取得します。static voiddoWithLocalFields(ClassSE<?> clazz, ReflectionUtils.FieldCallback fc) 指定されたクラスでローカルに宣言されたすべてのフィールドで指定されたコールバックを呼び出します。static voiddoWithLocalMethods(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc) 指定されたクラスのすべての一致するメソッドに対して、ローカルに宣言されたメソッドまたはそれに相当するメソッド(指定されたクラスが実装する Java 8 ベースのインターフェースのデフォルトメソッドなど)で指定されたコールバック操作を実行します。static voiddoWithMethods(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc) 指定されたクラスとスーパークラスのすべての一致するメソッドで指定されたコールバック操作を実行します。static voiddoWithMethods(ClassSE<?> clazz, ReflectionUtils.MethodCallback mc, ReflectionUtils.MethodFilter mf) 指定されたクラスとスーパークラス(または指定されたインターフェースとスーパーインターフェース)のすべての一致するメソッドで、指定されたコールバック操作を実行します。static FieldSEstatic FieldSEstatic FieldSEfindFieldIgnoreCase(ClassSE<?> clazz, StringSE name) static MethodSEfindMethod(ClassSE<?> clazz, StringSE name) 指定された名前でパラメーターなしで、指定されたクラスでMethodSE を見つけようとします。static MethodSEfindMethod(ClassSE<?> clazz, StringSE name, ClassSE<?>... paramTypes) 指定された名前とパラメーター型で、指定されたクラスでMethodSE を見つけようとします。static MethodSE[]getAllDeclaredMethods(ClassSE<?> leafClass) リーフクラスおよびすべてのスーパークラスで宣言されたすべてのメソッドを取得します。static MethodSE[]getDeclaredMethods(ClassSE<?> clazz) 新しいメソッドインスタンスを回避するためにローカルキャッシュを使用するClass.getDeclaredMethods()のバリアント。static ObjectSE指定されたtarget objectSE で提供されたfield objectSE によって表されるフィールドを取得します。static MethodSE[]getUniqueDeclaredMethods(ClassSE<?> leafClass) リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。static MethodSE[]getUniqueDeclaredMethods(ClassSE<?> leafClass, ReflectionUtils.MethodFilter mf) リーフクラスおよびすべてのスーパークラスで宣言されたメソッドの一意のセットを取得します。static void指定された呼び出しターゲット例外を処理します。static void指定されたリフレクション例外を処理します。static ObjectSEinvokeMethod(MethodSE method, ObjectSE target) 引数なしで指定されたターゲットオブジェクトに対して指定されたMethodSE を呼び出します。static ObjectSEinvokeMethod(MethodSE method, ObjectSE target, ObjectSE... args) 指定された引数を使用して、指定されたターゲットオブジェクトに対して指定されたMethodSE を呼び出します。static booleanisCglibRenamedMethod(MethodSE renamedMethod) パターン "CGLIB$methodName$0" に従って、指定されたメソッドが CGLIB の「名前変更済み」メソッドであるかどうかを判別します。static booleanisEqualsMethod(MethodSE method) 指定されたメソッドが「等しい」メソッドであるかどうかを判別します。static booleanisHashCodeMethod(MethodSE method) 指定されたメソッドが "hashCode" メソッドであるかどうかを判断します。static booleanisObjectMethod(MethodSE method) 指定されたメソッドが元々ObjectSE によって宣言されているかどうかを判別します。static booleanisPublicStaticFinal(FieldSE field) 指定されたフィールドが "public static final" 定数かどうかを判別します。static booleanisToStringMethod(MethodSE method) 指定されたメソッドが "toString" メソッドであるかどうかを判断します。static voidmakeAccessible(ConstructorSE<?> ctor) 指定されたコンストラクターをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static voidmakeAccessible(FieldSE field) 指定されたフィールドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static voidmakeAccessible(MethodSE method) 指定されたメソッドをアクセス可能にし、必要に応じて明示的にアクセス可能に設定します。static voidrethrowException(ThrowableSE throwable) おそらくInvocationTargetExceptionSE のターゲット例外である、指定されたexceptionSE を再スローします。static voidおそらくInvocationTargetExceptionSE のターゲット例外である、指定されたexceptionSE を再スローします。static voidstatic voidshallowCopyFieldState(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
おそらくInvocationTargetExceptionSE のターゲット例外である、指定されたexceptionSE を再スローします。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合にのみ呼び出す必要があります。必要に応じて、
RuntimeExceptionSE またはErrorSE への基になる例外キャストを再スローします。そうでなければ、UndeclaredThrowableExceptionSE をスローします。- パラメーター:
ex- 再スローの例外- 例外:
RuntimeExceptionSE- 再スローされた例外
rethrowException
おそらくInvocationTargetExceptionSE のターゲット例外である、指定されたexceptionSE を再スローします。チェックされた例外がターゲットメソッドによってスローされることが予期されていない場合にのみ呼び出す必要があります。必要に応じて、基になる例外を
ExceptionSE またはErrorSE にキャストし直します。そうでなければ、UndeclaredThrowableExceptionSE をスローします。- パラメーター:
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
指定された名前でパラメーターなしで、指定されたクラスでMethodSE を見つけようとします。Objectまでのすべてのスーパークラスを検索します。MethodSE が見つからない場合、nullを返します。- パラメーター:
clazz- イントロスペクトするクラスname- メソッドの名前- 戻り値:
- Method オブジェクト。見つからない場合は
null
findMethod
@Nullable public static MethodSE findMethod(ClassSE<?> clazz, StringSE name, @Nullable ClassSE<?>... paramTypes) 指定された名前とパラメーター型で、指定されたクラスでMethodSE を見つけようとします。Objectまでのすべてのスーパークラスを検索します。MethodSE が見つからない場合、nullを返します。- パラメーター:
clazz- イントロスペクトするクラスname- メソッドの名前paramTypes- メソッドのパラメーター型 (署名を示すnullの場合があります)- 戻り値:
- Method オブジェクト。見つからない場合は
null
invokeMethod
引数なしで指定されたターゲットオブジェクトに対して指定されたMethodSE を呼び出します。静的MethodSE を呼び出す場合、ターゲットオブジェクトはnullになります。スローされた例外は、
handleReflectionException(java.lang.Exception)の呼び出しを介して処理されます。- パラメーター:
method- 呼び出すメソッドtarget- メソッドを呼び出すターゲットオブジェクト- 戻り値:
- 呼び出し結果(ある場合)
- 関連事項:
invokeMethod
@Nullable public static ObjectSE invokeMethod(MethodSE method, @Nullable ObjectSE target, @Nullable ObjectSE... args) 指定された引数を使用して、指定されたターゲットオブジェクトに対して指定されたMethodSE を呼び出します。静的MethodSE を呼び出す場合、ターゲットオブジェクトは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
指定されたメソッドが元々ObjectSE によって宣言されているかどうかを判別します。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 objectSE で提供されたfield objectSE によって表されるフィールドを取得します。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