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, Johannes Englmeier
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAReflectionUtils.FieldFilterfor a given annotation.static interfaceAReflectionUtils.FieldFilterthat has a description. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> TcreateInstanceIfPresent(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 FieldfindField(Class<?> type, ReflectionUtils.DescribedFieldFilter filter) Finds the field matching the givenReflectionUtils.DescribedFieldFilter.static FieldfindField(Class<?> type, ReflectionUtils.DescribedFieldFilter filter, boolean enforceUniqueness) Finds the field matching the givenReflectionUtils.DescribedFieldFilter.static FieldfindField(Class<?> type, ReflectionUtils.FieldFilter filter) Finds the first field on the given class matching the givenReflectionUtils.FieldFilter.static FieldfindRequiredField(Class<?> type, String name) Finds the field of the given name on the given type.static MethodfindRequiredMethod(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 theMethodwith the given name and parameters declared on the given type, if available.static ObjectgetPrimitiveDefault(Class<?> type) Get default value for a primitive type.static booleanisNullable(MethodParameter parameter) Returns whether the givenMethodParameteris nullable.static booleanstatic Class<?>loadIfPresent(String name, ClassLoader classLoader) Loads the class with the given name using the givenClassLoader.returnTypeAndParameters(Method method) static voidSets 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.DescribedFieldFilteror 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 caseenforceUniquenessis 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.DescribedFieldFilteror 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
Constructorthat is compatible with the given arguments.
-
findRequiredMethod
Returns the method with the given name of the given class and parameter types. Prefers regular methods overbridgeandsyntheticones.- 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 theMethodwith 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 givenMethodParameteris nullable. Nullable parameters are reference types and ones that are defined in Kotlin as such.- Returns:
- true if
MethodParameteris 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- theClassLoaderto use to load the class.- Returns:
- the
Classor null in case the class can't be loaded for any reason. - Since:
- 2.5
-