Class ReflectionUtils

java.lang.Object
org.springframework.data.util.ReflectionUtils

public final class ReflectionUtils extends Object
Spring Data specific reflection utility methods and classes.
Since:
1.5
Author:
Oliver Gierke, Thomas Darimont, Christoph Strobl, Mark Paluch, Johannes Englmeier
  • Method Details

    • hasParameterOfType

      public static boolean hasParameterOfType(Method method, Class<?> type)
      Returns whether the given Method has a parameter of the given type.
      Parameters:
      method - the method to check, must not be null.
      type - parameter type to query for, must not be null.
      Returns:
      true the given Method has a parameter of the given type.
      Since:
      3.5
    • hasParameterAssignableToType

      public static boolean hasParameterAssignableToType(Method method, Class<?> type)
      Returns whether the given Method has a parameter that is assignable to the given type.
      Parameters:
      method - the method to check, must not be null.
      type - parameter type to query for, must not be null.
      Returns:
      true the given Method has a parameter that is assignable to the given type.
      Since:
      3.5
    • getParameterCount

      public static int getParameterCount(Method method, Predicate<Class<?>> predicate)
      Returns the number of matching parameters Method for Predicate.
      Parameters:
      method - Method to evaluate.
      predicate - the predicate matching Method
      Returns:
      the resulting number of matching parameters.
      Since:
      3.5
      See Also:
    • createInstanceIfPresent

      @Deprecated(since="3.5", forRemoval=true) public static <T> T createInstanceIfPresent(String classname, T defaultInstance)
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 3.5 as it is not used within the framework anymore.
      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

      public static boolean isVoid(Class<?> type)
      Check whether the given type represents a void type such as void, Void or Kotlin Unit.
      Parameters:
      type - must not be null.
      Returns:
      whether the given the type is a void type.
      Since:
      2.4
    • findField

      @Nullable public static Field findField(Class<?> type, ReflectionUtils.FieldFilter filter)
      Finds the first field on the given class matching the given ReflectionUtils.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

      @Nullable public static Field findField(Class<?> type, ReflectionUtils.DescribedFieldFilter filter)
      Finds the field matching the given ReflectionUtils.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 given ReflectionUtils.DescribedFieldFilter. Will make sure there's only one field matching the filter in case enforceUniqueness 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

      @Deprecated(since="3.5", forRemoval=true) public static Field findRequiredField(Class<?> type, String name)
      Deprecated, for removal: This API element is subject to removal in a future version.
      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:
      the required field.
      Throws:
      IllegalArgumentException - in case the field can't be found.
    • getRequiredField

      public static Field getRequiredField(Class<?> type, String name)
      Obtains the required field of the given name on the given type or throws IllegalArgumentException if the found could not be found.
      Parameters:
      type - must not be null.
      name - must not be null or empty.
      Returns:
      the required field.
      Throws:
      IllegalArgumentException - in case the field can't be found.
    • setField

      public static void setField(Field field, Object target, @Nullable Object value)
      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

      @Deprecated public static Optional<Constructor<?>> findConstructor(Class<?> type, Object... constructorArguments)
      Deprecated.
      since 3.5, return type will change to nullable instead of Optional.
      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

      @Deprecated public static Method findRequiredMethod(Class<?> type, String name, Class<?>... parameterTypes)
      Deprecated.
      Returns the method with the given name of the given class and parameter types. Prefers regular methods over bridge and synthetic 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.
    • getRequiredMethod

      public static Method getRequiredMethod(Class<?> type, String name, Class<?>... parameterTypes)
      Returns the method with the given name of the given class and parameter types. Prefers regular methods over bridge and synthetic 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.
      Since:
      3.5
    • returnTypeAndParameters

      public static Stream<Class<?>> returnTypeAndParameters(Method method)
      Returns a Stream of the return and parameters types of the given Method.
      Parameters:
      method - must not be null.
      Returns:
      stream of return and parameter types.
      Since:
      2.0
    • getMethod

      @Deprecated(since="3.5", forRemoval=true) public static Optional<Method> getMethod(Class<?> type, String name, ResolvableType... parameterTypes)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the Method 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:
      the optional Method.
      Since:
      2.0
    • findMethod

      @Nullable public static Method findMethod(Class<?> type, String name, ResolvableType... parameterTypes)
      Returns the Method 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:
      the required method.
      Since:
      3.5
    • isNullable

      public static boolean isNullable(MethodParameter parameter)
      Returns whether the given MethodParameter 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

      public static Object getPrimitiveDefault(Class<?> type)
      Get default value for a primitive type.
      Parameters:
      type - must not be null.
      Returns:
      boxed primitive default value.
      Since:
      2.1
    • loadIfPresent

      @Nullable @Deprecated(since="3.5", forRemoval=true) public static Class<?> loadIfPresent(String name, ClassLoader classLoader)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Loads the class with the given name using the given ClassLoader.
      Parameters:
      name - the name of the class to be loaded.
      classLoader - the ClassLoader 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