org.springframework.core.annotation

## Class SynthesizingMethodParameter

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

- Direct Known Subclasses:
    HandlerMethod.HandlerMethodParameter, HandlerMethod.HandlerMethodParameter

      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 and 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

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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, 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 Detail

    - #### 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; 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)

    - #### 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; 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)

    - #### 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 Detail

    - #### 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