org.springframework.core

Class MethodParameter


  • public class MethodParameter
    extends Object
    Helper class that encapsulates the specification of a method parameter, i.e. a Method or Constructor plus a parameter index and a nested type index for a declared generic type. Useful as a specification object to pass along.
    Since:
    2.0
    Author:
    Juergen Hoeller, Rob Harrop, Andy Clement
    See Also:
    GenericCollectionTypeResolver
    • Constructor Detail

      • MethodParameter

        public MethodParameter(Method method,
                       int parameterIndex)
        Create a new MethodParameter for the given method, with nesting level 1.
        Parameters:
        method - the Method to specify a parameter for
        parameterIndex - the index of the parameter
      • MethodParameter

        public MethodParameter(Method method,
                       int parameterIndex,
                       int nestingLevel)
        Create a new MethodParameter for the given method.
        Parameters:
        method - the Method to specify a parameter for
        parameterIndex - the index of the parameter (-1 for the method return type; 0 for the first method parameter, 1 for the second method parameter, etc)
        nestingLevel - the nesting level of the target type (typically 1; e.g. in case of a List of Lists, 1 would indicate the nested List, whereas 2 would indicate the element of the nested List)
      • MethodParameter

        public MethodParameter(Constructor<?> constructor,
                       int parameterIndex)
        Create a new MethodParameter for the given constructor, with nesting level 1.
        Parameters:
        constructor - the Constructor to specify a parameter for
        parameterIndex - the index of the parameter
      • MethodParameter

        public MethodParameter(Constructor<?> constructor,
                       int parameterIndex,
                       int nestingLevel)
        Create a new MethodParameter for the given constructor.
        Parameters:
        constructor - the Constructor to specify a parameter for
        parameterIndex - the index of the parameter
        nestingLevel - the nesting level of the target type (typically 1; e.g. in case of a List of Lists, 1 would indicate the nested List, whereas 2 would indicate the element of the nested List)
      • MethodParameter

        public MethodParameter(MethodParameter original)
        Copy constructor, resulting in an independent MethodParameter object based on the same metadata and cache state that the original object was in.
        Parameters:
        original - the original MethodParameter object to copy from
    • Method Detail

      • getMethod

        public Method getMethod()
        Return the wrapped Method, if any.

        Note: Either Method or Constructor is available.

        Returns:
        the Method, or null if none
      • getConstructor

        public Constructor<?> getConstructor()
        Return the wrapped Constructor, if any.

        Note: Either Method or Constructor is available.

        Returns:
        the Constructor, or null if none
      • getDeclaringClass

        public Class<?> getDeclaringClass()
        Return the class that declares the underlying Method or Constructor.
      • getParameterIndex

        public int getParameterIndex()
        Return the index of the method/constructor parameter.
        Returns:
        the parameter index (never negative)
      • getParameterType

        public Class<?> getParameterType()
        Return the type of the method/constructor parameter.
        Returns:
        the parameter type (never null)
      • getGenericParameterType

        public Type getGenericParameterType()
        Return the generic type of the method/constructor parameter.
        Returns:
        the parameter type (never null)
      • getNestedParameterType

        public Class<?> getNestedParameterType()
      • getMethodAnnotations

        public Annotation[] getMethodAnnotations()
        Return the annotations associated with the target method/constructor itself.
      • getMethodAnnotation

        public <T extends Annotation> T getMethodAnnotation(Class<T> annotationType)
        Return the method/constructor annotation of the given type, if available.
        Parameters:
        annotationType - the annotation type to look for
        Returns:
        the annotation object, or null if not found
      • getParameterAnnotations

        public Annotation[] getParameterAnnotations()
        Return the annotations associated with the specific method/constructor parameter.
      • getParameterAnnotation

        public <T extends Annotation> T getParameterAnnotation(Class<T> annotationType)
        Return the parameter annotation of the given type, if available.
        Parameters:
        annotationType - the annotation type to look for
        Returns:
        the annotation object, or null if not found
      • hasParameterAnnotations

        public boolean hasParameterAnnotations()
        Return true if the parameter has at least one annotation, false if it has none.
      • hasParameterAnnotation

        public <T extends Annotation> boolean hasParameterAnnotation(Class<T> annotationType)
        Return true if the parameter has the given annotation type, and false if it doesn't.
      • initParameterNameDiscovery

        public void initParameterNameDiscovery(ParameterNameDiscoverer parameterNameDiscoverer)
        Initialize parameter name discovery for this method parameter.

        This method does not actually try to retrieve the parameter name at this point; it just allows discovery to happen when the application calls getParameterName() (if ever).

      • getParameterName

        public String getParameterName()
        Return the name of the method/constructor parameter.
        Returns:
        the parameter name (may be null if no parameter name metadata is contained in the class file or no ParameterNameDiscoverer has been set to begin with)
      • increaseNestingLevel

        public void increaseNestingLevel()
        Increase this parameter's nesting level.
        See Also:
        getNestingLevel()
      • decreaseNestingLevel

        public void decreaseNestingLevel()
        Decrease this parameter's nesting level.
        See Also:
        getNestingLevel()
      • getNestingLevel

        public int getNestingLevel()
        Return the nesting level of the target type (typically 1; e.g. in case of a List of Lists, 1 would indicate the nested List, whereas 2 would indicate the element of the nested List).
      • setTypeIndexForCurrentLevel

        public void setTypeIndexForCurrentLevel(int typeIndex)
        Set the type index for the current nesting level.
        Parameters:
        typeIndex - the corresponding type index (or null for the default type index)
        See Also:
        getNestingLevel()
      • getTypeIndexForCurrentLevel

        public Integer getTypeIndexForCurrentLevel()
        Return the type index for the current nesting level.
        Returns:
        the corresponding type index, or null if none specified (indicating the default type index)
        See Also:
        getNestingLevel()
      • getTypeIndexForLevel

        public Integer getTypeIndexForLevel(int nestingLevel)
        Return the type index for the specified nesting level.
        Parameters:
        nestingLevel - the nesting level to check
        Returns:
        the corresponding type index, or null if none specified (indicating the default type index)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class  Object
      • forMethodOrConstructor

        public static MethodParameter forMethodOrConstructor(Object methodOrConstructor,
                                             int parameterIndex)
        Create a new MethodParameter for the given method or constructor.

        This is a convenience constructor for scenarios where a Method or Constructor reference is treated in a generic fashion.

        Parameters:
        methodOrConstructor - the Method or Constructor to specify a parameter for
        parameterIndex - the index of the parameter
        Returns:
        the corresponding MethodParameter instance