类 MethodParameter

  • 直接已知子类:
    SynthesizingMethodParameter

    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.

    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.

    从以下版本开始:
    2.0
    作者:
    Juergen Hoeller, Rob Harrop, Andy Clement, Sam Brannen
    另请参阅:
    SynthesizingMethodParameter
    • 构造器详细资料

      • MethodParameter

        public MethodParameter​(Method method,
                               int parameterIndex)
        Create a new MethodParameter for the given method, with nesting level 1.
        参数:
        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.
      • MethodParameter

        public MethodParameter​(Method method,
                               int parameterIndex,
                               int nestingLevel)
        Create a new MethodParameter for the given method.
        参数:
        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.
        参数:
        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.
        参数:
        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.
        参数:
        original - the original MethodParameter object to copy from
    • 方法详细资料

      • getMethod

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

        Note: Either Method or Constructor is available.

        返回:
        the Method, or null if none
      • getConstructor

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

        Note: Either Method or Constructor is available.

        返回:
        the Constructor, or null if none
      • getDeclaringClass

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

        public Member getMember()
        Return the wrapped member.
        返回:
        the Method or Constructor as Member
      • getAnnotatedElement

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

        返回:
        the Method or Constructor as AnnotatedElement
      • getParameterIndex

        public int getParameterIndex()
        Return the index of the method/constructor parameter.
        返回:
        the parameter index (-1 in case of the return type)
      • 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.
        参数:
        typeIndex - the corresponding type index (or null for the default type index)
        另请参阅:
        getNestingLevel()
      • getTypeIndexForLevel

        public Integer getTypeIndexForLevel​(int nestingLevel)
        Return the type index for the specified nesting level.
        参数:
        nestingLevel - the nesting level to check
        返回:
        the corresponding type index, or null if none specified (indicating the default type index)
      • nested

        public MethodParameter nested()
        Return a variant of this MethodParameter which points to the same parameter but one nesting level deeper. This is effectively the same as increaseNestingLevel(), just with an independent MethodParameter object (e.g. in case of the original being cached).
        从以下版本开始:
        4.3
      • isOptional

        public boolean isOptional()
        Return whether this method parameter is declared as optional in the form of Java 8's Optional.
        从以下版本开始:
        4.3
      • getContainingClass

        public Class<?> getContainingClass()
        Return the containing class for this method parameter.
        返回:
        a specific containing class (potentially a subclass of the declaring class), or otherwise simply the declaring class itself
        另请参阅:
        getDeclaringClass()
      • getParameterType

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

        public Type getGenericParameterType()
        Return the generic type of the method/constructor parameter.
        返回:
        the parameter type (never null)
        从以下版本开始:
        3.0
      • getMethodAnnotation

        public <A extends Annotation> A getMethodAnnotation​(Class<A> annotationType)
        Return the method/constructor annotation of the given type, if available.
        参数:
        annotationType - the annotation type to look for
        返回:
        the annotation object, or null if not found
      • getParameterAnnotation

        public <A extends Annotation> A getParameterAnnotation​(Class<A> annotationType)
        Return the parameter annotation of the given type, if available.
        参数:
        annotationType - the annotation type to look for
        返回:
        the annotation object, or null if not found
      • 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.
        返回:
        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)
      • adaptAnnotation

        protected <A extends Annotation> A adaptAnnotation​(A annotation)
        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.

        参数:
        annotation - the annotation about to be returned
        返回:
        the post-processed annotation (or simply the original one)
        从以下版本开始:
        4.2
      • adaptAnnotationArray

        protected Annotation[] adaptAnnotationArray​(Annotation[] annotations)
        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.

        参数:
        annotations - the annotation array about to be returned
        返回:
        the post-processed annotation array (or simply the original one)
        从以下版本开始:
        4.2
      • 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.

        参数:
        methodOrConstructor - the Method or Constructor to specify a parameter for
        parameterIndex - the index of the parameter
        返回:
        the corresponding MethodParameter instance