public class

MethodParameter

extends Object
java.lang.Object
   ↳ org.springframework.core.MethodParameter

Class Overview

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.

Summary

Public Constructors
MethodParameter(Method method, int parameterIndex)
Create a new MethodParameter for the given method, with nesting level 1.
MethodParameter(Method method, int parameterIndex, int nestingLevel)
Create a new MethodParameter for the given method.
MethodParameter(Constructor constructor, int parameterIndex)
Create a new MethodParameter for the given constructor, with nesting level 1.
MethodParameter(Constructor constructor, int parameterIndex, int nestingLevel)
Create a new MethodParameter for the given constructor.
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.
Public Methods
void decreaseNestingLevel()
Decrease this parameter's nesting level.
static MethodParameter forMethodOrConstructor(Object methodOrConstructor, int parameterIndex)
Create a new MethodParameter for the given method or constructor.
Constructor getConstructor()
Return the wrapped Constructor, if any.
Class getDeclaringClass()
Return the class that declares the underlying Method or Constructor.
Type getGenericParameterType()
Return the generic type of the method/constructor parameter.
Method getMethod()
Return the wrapped Method, if any.
<T extends Annotation> T getMethodAnnotation(Class<T> annotationType)
Return the method/constructor annotation of the given type, if available.
Annotation[] getMethodAnnotations()
Return the annotations associated with the target method/constructor itself.
int getNestingLevel()
Return the nesting level of the target type (typically 1; e.g.
<T extends Annotation> T getParameterAnnotation(Class<T> annotationType)
Return the parameter annotation of the given type, if available.
Annotation[] getParameterAnnotations()
Return the annotations associated with the specific method/constructor parameter.
int getParameterIndex()
Return the index of the method/constructor parameter.
String getParameterName()
Return the name of the method/constructor parameter.
Class<?> getParameterType()
Return the type of the method/constructor parameter.
Integer getTypeIndexForCurrentLevel()
Return the type index for the current nesting level.
Integer getTypeIndexForLevel(int nestingLevel)
Return the type index for the specified nesting level.
void increaseNestingLevel()
Increase this parameter's nesting level.
void initParameterNameDiscovery(ParameterNameDiscoverer parameterNameDiscoverer)
Initialize parameter name discovery for this method parameter.
void setTypeIndexForCurrentLevel(int typeIndex)
Set the type index for the current nesting level.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public MethodParameter (Method method, int parameterIndex)

Also: SpringCore

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

public MethodParameter (Method method, int parameterIndex, int nestingLevel)

Also: SpringCore

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)

public MethodParameter (Constructor constructor, int parameterIndex)

Also: SpringCore

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

public MethodParameter (Constructor constructor, int parameterIndex, int nestingLevel)

Also: SpringCore

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)

public MethodParameter (MethodParameter original)

Also: SpringCore

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

Public Methods

public void decreaseNestingLevel ()

Also: SpringCore

Decrease this parameter's nesting level.

public static MethodParameter forMethodOrConstructor (Object methodOrConstructor, int parameterIndex)

Also: SpringCore

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

public Constructor getConstructor ()

Also: SpringCore

Return the wrapped Constructor, if any.

Note: Either Method or Constructor is available.

Returns
  • the Constructor, or null if none

public Class getDeclaringClass ()

Also: SpringCore

Return the class that declares the underlying Method or Constructor.

public Type getGenericParameterType ()

Also: SpringCore

Return the generic type of the method/constructor parameter.

Returns
  • the parameter type (never null)

public Method getMethod ()

Also: SpringCore

Return the wrapped Method, if any.

Note: Either Method or Constructor is available.

Returns
  • the Method, or null if none

public T getMethodAnnotation (Class<T> annotationType)

Also: SpringCore

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

public Annotation[] getMethodAnnotations ()

Also: SpringCore

Return the annotations associated with the target method/constructor itself.

public int getNestingLevel ()

Also: SpringCore

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).

public T getParameterAnnotation (Class<T> annotationType)

Also: SpringCore

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

public Annotation[] getParameterAnnotations ()

Also: SpringCore

Return the annotations associated with the specific method/constructor parameter.

public int getParameterIndex ()

Also: SpringCore

Return the index of the method/constructor parameter.

Returns
  • the parameter index (never negative)

public String getParameterName ()

Also: SpringCore

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)

public Class<?> getParameterType ()

Also: SpringCore

Return the type of the method/constructor parameter.

Returns
  • the parameter type (never null)

public Integer getTypeIndexForCurrentLevel ()

Also: SpringCore

Return the type index for the current nesting level.

Returns
  • the corresponding type index, or null if none specified (indicating the default type index)

public Integer getTypeIndexForLevel (int nestingLevel)

Also: SpringCore

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)

public void increaseNestingLevel ()

Also: SpringCore

Increase this parameter's nesting level.

public void initParameterNameDiscovery (ParameterNameDiscoverer parameterNameDiscoverer)

Also: SpringCore

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).

public void setTypeIndexForCurrentLevel (int typeIndex)

Also: SpringCore

Set the type index for the current nesting level.

Parameters
typeIndex the corresponding type index (or null for the default type index)