Package org.springframework.core.annotation

# Class SynthesizingMethodParameter

java.lang.Object
org.springframework.core.MethodParameter
org.springframework.core.annotation.SynthesizingMethodParameter

Direct Known Subclasses:
  `AnnotatedMethod.AnnotatedMethodParameter`

public class SynthesizingMethodParameter extends MethodParameter
A `MethodParameter` variant which synthesizes annotations that declare attribute aliases via `@AliasFor`.

Since:
  4.2
Author:
  Juergen Hoeller, Sam Brannen
See Also:
  - `AnnotationUtils.synthesizeAnnotation(A, java.lang.reflect.AnnotatedElement)`
  - `AnnotationUtils.synthesizeAnnotationArray(java.lang.annotation.Annotation[], java.lang.reflect.AnnotatedElement)`

## Constructor Summary

Constructors
Modifier
Constructor
Description
``
`SynthesizingMethodParameter(Constructor<?> constructor, int parameterIndex)`
Create a new `SynthesizingMethodParameter` for the given constructor, with nesting level 1.
``
`SynthesizingMethodParameter(Constructor<?> constructor, int parameterIndex, int nestingLevel)`
Create a new `SynthesizingMethodParameter` for the given constructor.
``
`SynthesizingMethodParameter(Method method, int parameterIndex)`
Create a new `SynthesizingMethodParameter` for the given method, with nesting level 1.
``
`SynthesizingMethodParameter(Method method, int parameterIndex, int nestingLevel)`
Create a new `SynthesizingMethodParameter` for the given method.
`protected`
`SynthesizingMethodParameter(SynthesizingMethodParameter original)`
Copy constructor, resulting in an independent `SynthesizingMethodParameter` based on the same metadata and cache state that the original object was in.

## Method Summary

Modifier and Type
Method
Description
`protected <A extends Annotation>
A`
`adaptAnnotation(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.
`SynthesizingMethodParameter`
`clone()`
`static SynthesizingMethodParameter`
`forExecutable(Executable executable, int parameterIndex)`
Create a new SynthesizingMethodParameter for the given method or constructor.
`static SynthesizingMethodParameter`
`forParameter(Parameter parameter)`
Create a new SynthesizingMethodParameter for the given parameter descriptor.

### Methods inherited from class org.springframework.core.MethodParameter

`decreaseNestingLevel, equals, findParameterIndex, forFieldAwareConstructor, forMethodOrConstructor, getAnnotatedElement, getConstructor, getContainingClass, getDeclaringClass, getExecutable, getGenericParameterType, getMember, getMethod, getMethodAnnotation, getMethodAnnotations, getNestedGenericParameterType, getNestedParameterType, getNestingLevel, getParameter, getParameterAnnotation, getParameterAnnotations, getParameterIndex, getParameterName, getParameterType, getTypeIndexForCurrentLevel, getTypeIndexForLevel, hashCode, hasMethodAnnotation, hasParameterAnnotation, hasParameterAnnotations, increaseNestingLevel, initParameterNameDiscovery, isOptional, nested, nested, nestedIfOptional, setTypeIndexForCurrentLevel, toString, withContainingClass, withTypeIndex`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### SynthesizingMethodParameter

public SynthesizingMethodParameter(Method method, int parameterIndex)
Create a new `SynthesizingMethodParameter` for the given method, with nesting level 1.

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.

### SynthesizingMethodParameter

public SynthesizingMethodParameter(Method method, int parameterIndex, int nestingLevel)
Create a new `SynthesizingMethodParameter` 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; for example, in case of a List of Lists, 1 would indicate the nested List, whereas 2 would indicate the element of the nested List)

### SynthesizingMethodParameter

public SynthesizingMethodParameter(Constructor<?> constructor, int parameterIndex)
Create a new `SynthesizingMethodParameter` for the given constructor, with nesting level 1.

Parameters:
  `constructor` - the Constructor to specify a parameter for
  `parameterIndex` - the index of the parameter

### SynthesizingMethodParameter

public SynthesizingMethodParameter(Constructor<?> constructor, int parameterIndex, int nestingLevel)
Create a new `SynthesizingMethodParameter` 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; for example, in case of a List of Lists, 1 would indicate the nested List, whereas 2 would indicate the element of the nested List)

### SynthesizingMethodParameter

protected SynthesizingMethodParameter(SynthesizingMethodParameter original)
Copy constructor, resulting in an independent `SynthesizingMethodParameter` based on the same metadata and cache state that the original object was in.

Parameters:
  `original` - the original SynthesizingMethodParameter object to copy from

## Method Details

### adaptAnnotation

protected <A extends Annotation> A adaptAnnotation(A annotation)
Description copied from class: `MethodParameter`
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.

Overrides:
  `adaptAnnotation` in class `MethodParameter`
Parameters:
  `annotation` - the annotation about to be returned
Returns:
  the post-processed annotation (or simply the original one)

### adaptAnnotationArray

protected Annotation[] adaptAnnotationArray(Annotation[] annotations)
Description copied from class: `MethodParameter`
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.

Overrides:
  `adaptAnnotationArray` in class `MethodParameter`
Parameters:
  `annotations` - the annotation array about to be returned
Returns:
  the post-processed annotation array (or simply the original one)

### clone

public SynthesizingMethodParameter clone()

Overrides:
  `clone` in class `MethodParameter`

### forExecutable

public static SynthesizingMethodParameter forExecutable(Executable executable, int parameterIndex)
Create a new SynthesizingMethodParameter 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 for
  `parameterIndex` - the index of the parameter
Returns:
  the corresponding SynthesizingMethodParameter instance
Since:
  5.0

### forParameter

public static SynthesizingMethodParameter forParameter(Parameter parameter)
Create a new SynthesizingMethodParameter for the given parameter descriptor.

This is a convenience factory method for scenarios where a Java 8 `Parameter` descriptor is already available.

Parameters:
  `parameter` - the parameter descriptor
Returns:
  the corresponding SynthesizingMethodParameter instance
Since:
  5.0