Class MethodParameter
- Direct Known Subclasses:
 SynthesizingMethodParameter
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.
 As of 4.2, there is a SynthesizingMethodParameter
 subclass available which synthesizes annotations with attribute aliases. That subclass is used
 for web and message endpoint processing, in particular.
- Since:
 - 2.0
 - Author:
 - Juergen Hoeller, Rob Harrop, Andy Clement, Sam Brannen, Sebastien Deleuze, Phillip Webb
 - See Also:
 
- 
Constructor Summary
ConstructorsConstructorDescriptionMethodParameter(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(Method method, int parameterIndex) Create a newMethodParameterfor the given method, with nesting level 1.MethodParameter(Method method, int parameterIndex, int nestingLevel) Create a newMethodParameterfor the given method.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. - 
Method Summary
Modifier and TypeMethodDescriptionprotected <A extends Annotation>
AadaptAnnotation(A annotation) A template method to post-process a given annotation instance before returning it to the caller.protected Annotation[]adaptAnnotationArray(Annotation[] annotations) A template method to post-process a given annotation array before returning it to the caller.clone()voidDeprecated.booleanprotected static intfindParameterIndex(Parameter parameter) static MethodParameterforExecutable(Executable executable, int parameterIndex) Create a new MethodParameter for the given method or constructor.static MethodParameterforMethodOrConstructor(Object methodOrConstructor, int parameterIndex) Deprecated.as of 5.0, in favor offorExecutable(java.lang.reflect.Executable, int)static MethodParameterforParameter(Parameter parameter) Create a new MethodParameter for the given parameter descriptor.Return the wrapped annotated element.Constructor<?>Return the wrapped Constructor, if any.Class<?>Return the containing class for this method parameter.Class<?>Return the class that declares the underlying Method or Constructor.Return the wrapped executable.Return the generic type of the method/constructor parameter.Return the wrapped member.Return the wrapped Method, if any.<A extends Annotation>
AgetMethodAnnotation(Class<A> annotationType) Return the method/constructor annotation of the given type, if available.Return the annotations associated with the target method/constructor itself.Return the nested generic type of the method/constructor parameter.Class<?>Return the nested type of the method/constructor parameter.intReturn the nesting level of the target type (typically 1; e.g.Return theParameterdescriptor for method/constructor parameter.<A extends Annotation>
AgetParameterAnnotation(Class<A> annotationType) Return the parameter annotation of the given type, if available.Return the annotations associated with the specific method/constructor parameter.intReturn the index of the method/constructor parameter.Return the name of the method/constructor parameter.Class<?>Return the type of the method/constructor parameter.Return the type index for the current nesting level.getTypeIndexForLevel(int nestingLevel) Return the type index for the specified nesting level.inthashCode()<A extends Annotation>
booleanhasMethodAnnotation(Class<A> annotationType) Return whether the method/constructor is annotated with the given type.<A extends Annotation>
booleanhasParameterAnnotation(Class<A> annotationType) Return whether the parameter is declared with the given annotation type.booleanReturntrueif the parameter has at least one annotation,falseif it has none.voidDeprecated.since 5.2 in favor ofnested(Integer)voidinitParameterNameDiscovery(ParameterNameDiscoverer parameterNameDiscoverer) Initialize parameter name discovery for this method parameter.booleanReturn whether this method indicates a parameter which is not required: either in the form of Java 8'sOptional, any variant of a parameter-levelNullableannotation (such as from JSR-305 or the FindBugs set of annotations), or a language-level nullable type declaration orContinuationparameter in Kotlin.nested()Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper.Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper.Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper in case of aOptionaldeclaration.voidsetTypeIndexForCurrentLevel(int typeIndex) Deprecated.since 5.2 in favor ofwithTypeIndex(int)toString()withContainingClass(Class<?> containingClass) Return a variant of thisMethodParameterwhich refers to the given containing class.withTypeIndex(int typeIndex) Return a variant of thisMethodParameterwith the type for the current level set to the specified value. 
- 
Constructor Details
- 
MethodParameter
Create a newMethodParameterfor the given method, with nesting level 1.- Parameters:
 method- the Method to specify a parameter forparameterIndex- the index of the parameter: -1 for the method return type; 0 for the first method parameter; 1 for the second method parameter, etc.
 - 
MethodParameter
Create a newMethodParameterfor the given method.- Parameters:
 method- the Method to specify a parameter forparameterIndex- 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
Create a new MethodParameter for the given constructor, with nesting level 1.- Parameters:
 constructor- the Constructor to specify a parameter forparameterIndex- the index of the parameter
 - 
MethodParameter
Create a new MethodParameter for the given constructor.- Parameters:
 constructor- the Constructor to specify a parameter forparameterIndex- the index of the parameternestingLevel- 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
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 Details
- 
getMethod
Return the wrapped Method, if any.Note: Either Method or Constructor is available.
- Returns:
 - the Method, or 
nullif none 
 - 
getConstructor
Return the wrapped Constructor, if any.Note: Either Method or Constructor is available.
- Returns:
 - the Constructor, or 
nullif none 
 - 
getDeclaringClass
Return the class that declares the underlying Method or Constructor. - 
getMember
Return the wrapped member.- Returns:
 - the Method or Constructor as Member
 
 - 
getAnnotatedElement
Return the wrapped annotated element.Note: This method exposes the annotations declared on the method/constructor itself (i.e. at the method/constructor level, not at the parameter level).
To get the
AnnotatedElementat the parameter level, usegetParameter().- Returns:
 - the Method or Constructor as AnnotatedElement
 
 - 
getExecutable
Return the wrapped executable.- Returns:
 - the Method or Constructor as Executable
 - Since:
 - 5.0
 
 - 
getParameter
Return theParameterdescriptor for method/constructor parameter.- Since:
 - 5.0
 
 - 
getParameterIndex
public int getParameterIndex()Return the index of the method/constructor parameter.- Returns:
 - the parameter index (-1 in case of the return type)
 
 - 
increaseNestingLevel
Deprecated.since 5.2 in favor ofnested(Integer)Increase this parameter's nesting level.- See Also:
 
 - 
decreaseNestingLevel
Deprecated.since 5.2 in favor of retaining the original MethodParameter and usingnested(Integer)if nesting is requiredDecrease this parameter's nesting level.- See Also:
 
 - 
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). - 
withTypeIndex
Return a variant of thisMethodParameterwith the type for the current level set to the specified value.- Parameters:
 typeIndex- the new type index- Since:
 - 5.2
 
 - 
setTypeIndexForCurrentLevel
Deprecated.since 5.2 in favor ofwithTypeIndex(int)Set the type index for the current nesting level.- Parameters:
 typeIndex- the corresponding type index (ornullfor the default type index)- See Also:
 
 - 
getTypeIndexForCurrentLevel
Return the type index for the current nesting level.- Returns:
 - the corresponding type index, or 
nullif none specified (indicating the default type index) - See Also:
 
 - 
getTypeIndexForLevel
Return the type index for the specified nesting level.- Parameters:
 nestingLevel- the nesting level to check- Returns:
 - the corresponding type index, or 
nullif none specified (indicating the default type index) 
 - 
nested
Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper.- Since:
 - 4.3
 
 - 
nested
Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper.- Parameters:
 typeIndex- the type index for the new nesting level- Since:
 - 5.2
 
 - 
isOptional
public boolean isOptional()Return whether this method indicates a parameter which is not required: either in the form of Java 8'sOptional, any variant of a parameter-levelNullableannotation (such as from JSR-305 or the FindBugs set of annotations), or a language-level nullable type declaration orContinuationparameter in Kotlin.- Since:
 - 4.3
 
 - 
nestedIfOptional
Return a variant of thisMethodParameterwhich points to the same parameter but one nesting level deeper in case of aOptionaldeclaration.- Since:
 - 4.3
 - See Also:
 
 - 
withContainingClass
Return a variant of thisMethodParameterwhich refers to the given containing class.- Parameters:
 containingClass- a specific containing class (potentially a subclass of the declaring class, e.g. substituting a type variable)- Since:
 - 5.2
 - See Also:
 
 - 
getContainingClass
Return the containing class for this method parameter.- Returns:
 - a specific containing class (potentially a subclass of the declaring class), or otherwise simply the declaring class itself
 - See Also:
 
 - 
getParameterType
Return the type of the method/constructor parameter.- Returns:
 - the parameter type (never 
null) 
 - 
getGenericParameterType
Return the generic type of the method/constructor parameter.- Returns:
 - the parameter type (never 
null) - Since:
 - 3.0
 
 - 
getNestedParameterType
Return the nested type of the method/constructor parameter.- Returns:
 - the parameter type (never 
null) - Since:
 - 3.1
 - See Also:
 
 - 
getNestedGenericParameterType
Return the nested generic type of the method/constructor parameter.- Returns:
 - the parameter type (never 
null) - Since:
 - 4.2
 - See Also:
 
 - 
getMethodAnnotations
Return the annotations associated with the target method/constructor itself. - 
getMethodAnnotation
Return the method/constructor annotation of the given type, if available.- Parameters:
 annotationType- the annotation type to look for- Returns:
 - the annotation object, or 
nullif not found 
 - 
hasMethodAnnotation
Return whether the method/constructor is annotated with the given type.- Parameters:
 annotationType- the annotation type to look for- Since:
 - 4.3
 - See Also:
 
 - 
getParameterAnnotations
Return the annotations associated with the specific method/constructor parameter. - 
hasParameterAnnotations
public boolean hasParameterAnnotations()Returntrueif the parameter has at least one annotation,falseif it has none.- See Also:
 
 - 
getParameterAnnotation
Return the parameter annotation of the given type, if available.- Parameters:
 annotationType- the annotation type to look for- Returns:
 - the annotation object, or 
nullif not found 
 - 
hasParameterAnnotation
Return whether the parameter is declared with the given annotation type.- Parameters:
 annotationType- the annotation type to look for- See Also:
 
 - 
initParameterNameDiscovery
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
Return the name of the method/constructor parameter.- Returns:
 - the parameter name (may be 
nullif no parameter name metadata is contained in the class file or noParameterNameDiscovererhas been set to begin with) 
 - 
adaptAnnotation
A template method to post-process a given annotation instance before returning it to the caller.The default implementation simply returns the given annotation as-is.
- Parameters:
 annotation- the annotation about to be returned- Returns:
 - the post-processed annotation (or simply the original one)
 - Since:
 - 4.2
 
 - 
adaptAnnotationArray
A template method to post-process a given annotation array before returning it to the caller.The default implementation simply returns the given annotation array as-is.
- Parameters:
 annotations- the annotation array about to be returned- Returns:
 - the post-processed annotation array (or simply the original one)
 - Since:
 - 4.2
 
 - 
equals
 - 
hashCode
public int hashCode() - 
toString
 - 
clone
 - 
forMethodOrConstructor
@Deprecated public static MethodParameter forMethodOrConstructor(Object methodOrConstructor, int parameterIndex) Deprecated.as of 5.0, in favor offorExecutable(java.lang.reflect.Executable, int)Create a new MethodParameter for the given method or constructor.This is a convenience factory method for scenarios where a Method or Constructor reference is treated in a generic fashion.
- Parameters:
 methodOrConstructor- the Method or Constructor to specify a parameter forparameterIndex- the index of the parameter- Returns:
 - the corresponding MethodParameter instance
 
 - 
forExecutable
Create a new MethodParameter for the given method or constructor.This is a convenience factory method for scenarios where a Method or Constructor reference is treated in a generic fashion.
- Parameters:
 executable- the Method or Constructor to specify a parameter forparameterIndex- the index of the parameter- Returns:
 - the corresponding MethodParameter instance
 - Since:
 - 5.0
 
 - 
forParameter
Create a new MethodParameter for the given parameter descriptor.This is a convenience factory method for scenarios where a Java 8
Parameterdescriptor is already available.- Parameters:
 parameter- the parameter descriptor- Returns:
 - the corresponding MethodParameter instance
 - Since:
 - 5.0
 
 - 
findParameterIndex
 
 - 
 
nested(Integer)if nesting is required