Package org.springframework.data.util
Class ReflectionUtils
java.lang.Object
org.springframework.data.util.ReflectionUtils
Spring Data specific reflection utility methods and classes.
- Since:
- 1.5
- Author:
- Oliver Gierke, Thomas Darimont, Christoph Strobl, Mark Paluch
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
AReflectionUtils.FieldFilter
for a given annotation.static interface
AReflectionUtils.FieldFilter
that has a description. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> T
createInstanceIfPresent
(String classname, T defaultInstance) Creates an instance of the class with the given fully qualified name or returns the given default instance if the class cannot be loaded or instantiated.static Optional<Constructor<?>>
findConstructor
(Class<?> type, Object... constructorArguments) Finds a constructor on the given type that matches the given constructor arguments.static Field
findField
(Class<?> type, ReflectionUtils.DescribedFieldFilter filter) Finds the field matching the givenReflectionUtils.DescribedFieldFilter
.static Field
findField
(Class<?> type, ReflectionUtils.DescribedFieldFilter filter, boolean enforceUniqueness) Finds the field matching the givenReflectionUtils.DescribedFieldFilter
.static Field
findField
(Class<?> type, ReflectionUtils.FieldFilter filter) Finds the first field on the given class matching the givenReflectionUtils.FieldFilter
.static Field
findRequiredField
(Class<?> type, String name) Finds the field of the given name on the given type.static Method
findRequiredMethod
(Class<?> type, String name, Class<?>... parameterTypes) Returns the method with the given name of the given class and parameter types.getMethod
(Class<?> type, String name, ResolvableType... parameterTypes) Returns theMethod
with the given name and parameters declared on the given type, if available.static Object
getPrimitiveDefault
(Class<?> type) Get default value for a primitive type.static boolean
isNullable
(MethodParameter parameter) Returns whether the givenMethodParameter
is nullable.static boolean
static Class<?>
loadIfPresent
(String name, ClassLoader classLoader) Loads the class with the given name using the givenClassLoader
.returnTypeAndParameters
(Method method) static void
Sets the given field on the given object to the given value.
-
Method Details
-
createInstanceIfPresent
Creates an instance of the class with the given fully qualified name or returns the given default instance if the class cannot be loaded or instantiated.- Parameters:
classname
- the fully qualified class name to create an instance for.defaultInstance
- the instance to fall back to in case the given class cannot be loaded or instantiated.- Returns:
-
isVoid
- Parameters:
type
- must not be null.- Returns:
- whether the given the type is a void type.
- Since:
- 2.4
-
findField
Finds the first field on the given class matching the givenReflectionUtils.FieldFilter
.- Parameters:
type
- must not be null.filter
- must not be null.- Returns:
- the field matching the filter or null in case no field could be found.
-
findField
Finds the field matching the givenReflectionUtils.DescribedFieldFilter
. Will make sure there's only one field matching the filter.- Parameters:
type
- must not be null.filter
- must not be null.- Returns:
- the field matching the given
ReflectionUtils.DescribedFieldFilter
or null if none found. - Throws:
IllegalStateException
- in case more than one matching field is found- See Also:
-
findField
@Nullable public static Field findField(Class<?> type, ReflectionUtils.DescribedFieldFilter filter, boolean enforceUniqueness) Finds the field matching the givenReflectionUtils.DescribedFieldFilter
. Will make sure there's only one field matching the filter in caseenforceUniqueness
is true.- Parameters:
type
- must not be null.filter
- must not be null.enforceUniqueness
- whether to enforce uniqueness of the field- Returns:
- the field matching the given
ReflectionUtils.DescribedFieldFilter
or null if none found. - Throws:
IllegalStateException
- if enforceUniqueness is true and more than one matching field is found
-
findRequiredField
Finds the field of the given name on the given type.- Parameters:
type
- must not be null.name
- must not be null or empty.- Returns:
- Throws:
IllegalArgumentException
- in case the field can't be found.
-
setField
Sets the given field on the given object to the given value. Will make sure the given field is accessible.- Parameters:
field
- must not be null.target
- must not be null.value
-
-
findConstructor
public static Optional<Constructor<?>> findConstructor(Class<?> type, Object... constructorArguments) Finds a constructor on the given type that matches the given constructor arguments.- Parameters:
type
- must not be null.constructorArguments
- must not be null.- Returns:
- a
Constructor
that is compatible with the given arguments.
-
findRequiredMethod
Returns the method with the given name of the given class and parameter types. Prefers regular methods overbridge
andsynthetic
ones.- Parameters:
type
- must not be null.name
- must not be null.parameterTypes
- must not be null.- Returns:
- the method object.
- Throws:
IllegalArgumentException
- in case the method cannot be resolved.
-
returnTypeAndParameters
- Parameters:
method
- must not be null.- Returns:
- Since:
- 2.0
-
getMethod
public static Optional<Method> getMethod(Class<?> type, String name, ResolvableType... parameterTypes) Returns theMethod
with the given name and parameters declared on the given type, if available.- Parameters:
type
- must not be null.name
- must not be null or empty.parameterTypes
- must not be null.- Returns:
- Since:
- 2.0
-
isNullable
Returns whether the givenMethodParameter
is nullable. Nullable parameters are reference types and ones that are defined in Kotlin as such.- Returns:
- true if
MethodParameter
is nullable. - Since:
- 2.0
-
getPrimitiveDefault
Get default value for a primitive type.- Parameters:
type
- must not be null.- Returns:
- boxed primitive default value.
- Since:
- 2.1
-
loadIfPresent
Loads the class with the given name using the givenClassLoader
.- Parameters:
name
- the name of the class to be loaded.classLoader
- theClassLoader
to use to load the class.- Returns:
- the
Class
or null in case the class can't be loaded for any reason. - Since:
- 2.5
-