public abstract class ReflectionUtils extends Object
Only intended for internal use.
| Modifier and Type | Class and Description | 
|---|---|
| static interface  | ReflectionUtils.FieldCallbackCallback interface invoked on each field in the hierarchy. | 
| static interface  | ReflectionUtils.FieldFilterCallback optionally used to filter fields to be operated on by a field callback. | 
| static interface  | ReflectionUtils.MethodCallbackAction to take on each method. | 
| static interface  | ReflectionUtils.MethodFilterCallback optionally used to filter methods to be operated on by a method callback. | 
| Modifier and Type | Field and Description | 
|---|---|
| static ReflectionUtils.FieldFilter | COPYABLE_FIELDSPre-built FieldFilter that matches all non-static, non-final fields. | 
| static ReflectionUtils.MethodFilter | USER_DECLARED_METHODSPre-built  ReflectionUtils.MethodFilterthat matches all non-bridge non-synthetic methods
 which are not declared onjava.lang.Object. | 
| Constructor and Description | 
|---|
| ReflectionUtils() | 
| Modifier and Type | Method and Description | 
|---|---|
| static <T> Constructor<T> | accessibleConstructor(Class<T> clazz,
                     Class<?>... parameterTypes)Obtain an accessible constructor for the given class and parameters. | 
| static void | clearCache()Clear the internal method/field cache. | 
| static boolean | declaresException(Method method,
                 Class<?> exceptionType)Determine whether the given method explicitly declares the given
 exception or one of its superclasses, which means that an exception
 of that type can be propagated as-is within a reflective invocation. | 
| static void | doWithFields(Class<?> clazz,
            ReflectionUtils.FieldCallback fc)Invoke the given callback on all fields in the target class, going up the
 class hierarchy to get all declared fields. | 
| static void | doWithFields(Class<?> clazz,
            ReflectionUtils.FieldCallback fc,
            ReflectionUtils.FieldFilter ff)Invoke the given callback on all fields in the target class, going up the
 class hierarchy to get all declared fields. | 
| static void | doWithLocalFields(Class<?> clazz,
                 ReflectionUtils.FieldCallback fc)Invoke the given callback on all locally declared fields in the given class. | 
| static void | doWithLocalMethods(Class<?> clazz,
                  ReflectionUtils.MethodCallback mc)Perform the given callback operation on all matching methods of the given
 class, as locally declared or equivalent thereof (such as default methods
 on Java 8 based interfaces that the given class implements). | 
| static void | doWithMethods(Class<?> clazz,
             ReflectionUtils.MethodCallback mc)Perform the given callback operation on all matching methods of the given
 class and superclasses. | 
| static void | doWithMethods(Class<?> clazz,
             ReflectionUtils.MethodCallback mc,
             ReflectionUtils.MethodFilter mf)Perform the given callback operation on all matching methods of the given
 class and superclasses (or given interface and super-interfaces). | 
| static Field | findField(Class<?> clazz,
         String name) | 
| static Field | findField(Class<?> clazz,
         String name,
         Class<?> type) | 
| static Method | findMethod(Class<?> clazz,
          String name)Attempt to find a  Methodon the supplied class with the supplied name
 and no parameters. | 
| static Method | findMethod(Class<?> clazz,
          String name,
          Class<?>... paramTypes)Attempt to find a  Methodon the supplied class with the supplied name
 and parameter types. | 
| static Method[] | getAllDeclaredMethods(Class<?> leafClass)Get all declared methods on the leaf class and all superclasses. | 
| static Method[] | getDeclaredMethods(Class<?> clazz)Variant of  Class.getDeclaredMethods()that uses a local cache in
 order to avoid the JVM's SecurityManager check and new Method instances. | 
| static Object | getField(Field field,
        Object target)Get the field represented by the supplied  field objecton the
 specifiedtarget object. | 
| static Method[] | getUniqueDeclaredMethods(Class<?> leafClass)Get the unique set of declared methods on the leaf class and all superclasses. | 
| static Method[] | getUniqueDeclaredMethods(Class<?> leafClass,
                        ReflectionUtils.MethodFilter mf)Get the unique set of declared methods on the leaf class and all superclasses. | 
| static void | handleInvocationTargetException(InvocationTargetException ex)Handle the given invocation target exception. | 
| static void | handleReflectionException(Exception ex)Handle the given reflection exception. | 
| static Object | invokeMethod(Method method,
            Object target)Invoke the specified  Methodagainst the supplied target object with no arguments. | 
| static Object | invokeMethod(Method method,
            Object target,
            Object... args)Invoke the specified  Methodagainst the supplied target object with the
 supplied arguments. | 
| static boolean | isCglibRenamedMethod(Method renamedMethod)Determine whether the given method is a CGLIB 'renamed' method,
 following the pattern "CGLIB$methodName$0". | 
| static boolean | isEqualsMethod(Method method)Determine whether the given method is an "equals" method. | 
| static boolean | isHashCodeMethod(Method method)Determine whether the given method is a "hashCode" method. | 
| static boolean | isObjectMethod(Method method)Determine whether the given method is originally declared by  Object. | 
| static boolean | isPublicStaticFinal(Field field)Determine whether the given field is a "public static final" constant. | 
| static boolean | isToStringMethod(Method method)Determine whether the given method is a "toString" method. | 
| static void | makeAccessible(Constructor<?> ctor)Make the given constructor accessible, explicitly setting it accessible
 if necessary. | 
| static void | makeAccessible(Field field)Make the given field accessible, explicitly setting it accessible if
 necessary. | 
| static void | makeAccessible(Method method)Make the given method accessible, explicitly setting it accessible if
 necessary. | 
| static void | rethrowException(Throwable ex)Rethrow the given  exception, which is presumably the
 target exception of anInvocationTargetException. | 
| static void | rethrowRuntimeException(Throwable ex)Rethrow the given  exception, which is presumably the
 target exception of anInvocationTargetException. | 
| static void | setField(Field field,
        Object target,
        Object value)Set the field represented by the supplied field object on
 the specified target object to the specified  value. | 
| static void | shallowCopyFieldState(Object src,
                     Object dest)Given the source object and the destination, which must be the same class
 or a subclass, copy all fields, including inherited fields. | 
public static final ReflectionUtils.MethodFilter USER_DECLARED_METHODS
ReflectionUtils.MethodFilter that matches all non-bridge non-synthetic methods
 which are not declared on java.lang.Object.public static final ReflectionUtils.FieldFilter COPYABLE_FIELDS
public static void handleReflectionException(Exception ex)
Should only be called if no checked exception is expected to be thrown by a target method, or if an error occurs while accessing a method or field.
Throws the underlying RuntimeException or Error in case of an InvocationTargetException with such a root cause. Throws an IllegalStateException with an appropriate message or UndeclaredThrowableException otherwise.
ex - the reflection exception to handlepublic static void handleInvocationTargetException(InvocationTargetException ex)
Throws the underlying RuntimeException or Error in case of such a root cause. Throws an UndeclaredThrowableException otherwise.
ex - the invocation target exception to handlepublic static void rethrowRuntimeException(Throwable ex)
exception, which is presumably the
 target exception of an InvocationTargetException.
 Should only be called if no checked exception is expected to be thrown
 by the target method.
 Rethrows the underlying exception cast to a RuntimeException or
 Error if appropriate; otherwise, throws an
 UndeclaredThrowableException.
ex - the exception to rethrowRuntimeException - the rethrown exceptionpublic static void rethrowException(Throwable ex) throws Exception
exception, which is presumably the
 target exception of an InvocationTargetException.
 Should only be called if no checked exception is expected to be thrown
 by the target method.
 Rethrows the underlying exception cast to an Exception or
 Error if appropriate; otherwise, throws an
 UndeclaredThrowableException.
ex - the exception to rethrowException - the rethrown exception (in case of a checked exception)public static <T> Constructor<T> accessibleConstructor(Class<T> clazz, Class<?>... parameterTypes) throws NoSuchMethodException
clazz - the clazz to checkparameterTypes - the parameter types of the desired constructorNoSuchMethodException - if no such constructor existspublic static void makeAccessible(Constructor<?> ctor)
setAccessible(true) method is only called
 when actually necessary, to avoid unnecessary conflicts with a JVM
 SecurityManager (if active).ctor - the constructor to make accessibleAccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)@Nullable public static Method findMethod(Class<?> clazz, String name)
Method on the supplied class with the supplied name
 and no parameters. Searches all superclasses up to Object.
 Returns null if no Method can be found.
clazz - the class to introspectname - the name of the methodnull if none found@Nullable public static Method findMethod(Class<?> clazz, String name, @Nullable Class<?>... paramTypes)
Method on the supplied class with the supplied name
 and parameter types. Searches all superclasses up to Object.
 Returns null if no Method can be found.
clazz - the class to introspectname - the name of the methodparamTypes - the parameter types of the method
 (may be null to indicate any signature)null if none found@Nullable public static Object invokeMethod(Method method, @Nullable Object target)
Method against the supplied target object with no arguments.
 The target object can be null when invoking a static Method.
 Thrown exceptions are handled via a call to handleReflectionException(java.lang.Exception).
method - the method to invoketarget - the target object to invoke the method oninvokeMethod(java.lang.reflect.Method, Object, Object[])@Nullable public static Object invokeMethod(Method method, @Nullable Object target, @Nullable Object... args)
Method against the supplied target object with the
 supplied arguments. The target object can be null when invoking a
 static Method.
 Thrown exceptions are handled via a call to handleReflectionException(java.lang.Exception).
method - the method to invoketarget - the target object to invoke the method onargs - the invocation arguments (may be null)public static boolean declaresException(Method method, Class<?> exceptionType)
method - the declaring methodexceptionType - the exception to throwtrue if the exception can be thrown as-is;
 false if it needs to be wrappedpublic static void doWithLocalMethods(Class<?> clazz, ReflectionUtils.MethodCallback mc)
clazz - the class to introspectmc - the callback to invoke for each methodIllegalStateException - if introspection failsdoWithMethods(java.lang.Class<?>, org.springframework.util.ReflectionUtils.MethodCallback)public static void doWithMethods(Class<?> clazz, ReflectionUtils.MethodCallback mc)
The same named method occurring on subclass and superclass will appear
 twice, unless excluded by a ReflectionUtils.MethodFilter.
clazz - the class to introspectmc - the callback to invoke for each methodIllegalStateException - if introspection failsdoWithMethods(Class, MethodCallback, MethodFilter)public static void doWithMethods(Class<?> clazz, ReflectionUtils.MethodCallback mc, @Nullable ReflectionUtils.MethodFilter mf)
The same named method occurring on subclass and superclass will appear
 twice, unless excluded by the specified ReflectionUtils.MethodFilter.
clazz - the class to introspectmc - the callback to invoke for each methodmf - the filter that determines the methods to apply the callback toIllegalStateException - if introspection failspublic static Method[] getAllDeclaredMethods(Class<?> leafClass)
leafClass - the class to introspectIllegalStateException - if introspection failspublic static Method[] getUniqueDeclaredMethods(Class<?> leafClass)
leafClass - the class to introspectIllegalStateException - if introspection failspublic static Method[] getUniqueDeclaredMethods(Class<?> leafClass, @Nullable ReflectionUtils.MethodFilter mf)
leafClass - the class to introspectmf - the filter that determines the methods to take into accountIllegalStateException - if introspection failspublic static Method[] getDeclaredMethods(Class<?> clazz)
Class.getDeclaredMethods() that uses a local cache in
 order to avoid the JVM's SecurityManager check and new Method instances.
 In addition, it also includes Java 8 default methods from locally
 implemented interfaces, since those are effectively to be treated just
 like declared methods.clazz - the class to introspectIllegalStateException - if introspection failsClass.getDeclaredMethods()public static boolean isEqualsMethod(@Nullable Method method)
Object.equals(Object)public static boolean isHashCodeMethod(@Nullable Method method)
Object.hashCode()public static boolean isToStringMethod(@Nullable Method method)
Object.toString()public static boolean isObjectMethod(@Nullable Method method)
Object.public static boolean isCglibRenamedMethod(Method renamedMethod)
renamedMethod - the method to checkpublic static void makeAccessible(Method method)
setAccessible(true) method is only called
 when actually necessary, to avoid unnecessary conflicts with a JVM
 SecurityManager (if active).method - the method to make accessibleAccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)@Nullable public static Field findField(Class<?> clazz, String name)
field on the supplied Class with the
 supplied name. Searches all superclasses up to Object.clazz - the class to introspectname - the name of the fieldnull if not found@Nullable public static Field findField(Class<?> clazz, @Nullable String name, @Nullable Class<?> type)
field on the supplied Class with the
 supplied name and/or type. Searches all superclasses
 up to Object.clazz - the class to introspectname - the name of the field (may be null if type is specified)type - the type of the field (may be null if name is specified)null if not foundpublic static void setField(Field field, @Nullable Object target, @Nullable Object value)
value.
 In accordance with Field.set(Object, Object) semantics, the new value
 is automatically unwrapped if the underlying field has a primitive type.
 
This method does not support setting static final fields.
 
Thrown exceptions are handled via a call to handleReflectionException(Exception).
field - the field to settarget - the target object on which to set the field
 (or null for a static field)value - the value to set (may be null)@Nullable public static Object getField(Field field, @Nullable Object target)
field object on the
 specified target object. In accordance with Field.get(Object)
 semantics, the returned value is automatically wrapped if the underlying field
 has a primitive type.
 Thrown exceptions are handled via a call to handleReflectionException(Exception).
field - the field to gettarget - the target object from which to get the field
 (or null for a static field)public static void doWithLocalFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)
clazz - the target class to analyzefc - the callback to invoke for each fieldIllegalStateException - if introspection failsdoWithFields(java.lang.Class<?>, org.springframework.util.ReflectionUtils.FieldCallback)public static void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc)
clazz - the target class to analyzefc - the callback to invoke for each fieldIllegalStateException - if introspection failspublic static void doWithFields(Class<?> clazz, ReflectionUtils.FieldCallback fc, @Nullable ReflectionUtils.FieldFilter ff)
clazz - the target class to analyzefc - the callback to invoke for each fieldff - the filter that determines the fields to apply the callback toIllegalStateException - if introspection failspublic static void shallowCopyFieldState(Object src, Object dest)
IllegalStateException - if introspection failspublic static boolean isPublicStaticFinal(Field field)
field - the field to checkpublic static void makeAccessible(Field field)
setAccessible(true) method is only called
 when actually necessary, to avoid unnecessary conflicts with a JVM
 SecurityManager (if active).field - the field to make accessibleAccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)public static void clearCache()