Package com.thoughtworks.paranamer

## Class AnnotationParanamer

- java.lang.Object
- - com.thoughtworks.paranamer.AnnotationParanamer

- All Implemented Interfaces:
    `Paranamer`

      public class AnnotationParanamer
      extends Object
      implements Paranamer

  Implementation of Paranamer that uses @Named annotation of JSR 330. It is overridable to allow other annotations to be used (JBehave, Guice's original one)
  Author:
    Paul Hammant

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `AnnotationParanamer.Jsr330Helper` | This is a different class, because the @Inject jar may not be in the classpath.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `__PARANAMER_DATA` |

    - ### Fields inherited from interface com.thoughtworks.paranamer.Paranamer

      `EMPTY_NAMES`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AnnotationParanamer()` |
    `AnnotationParanamer​(Paranamer fallback)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected String` | `getNamedValue​(Annotation ann)` | Override this if you want something other than JSR 330's Named annotation.
    `protected boolean` | `isNamed​(Annotation ann)` | Override this if you want something other than JSR 330's Named annotation.
    `String[]` | `lookupParameterNames​(AccessibleObject methodOrConstructor)` | Lookup the parameter names of a given method.
    `String[]` | `lookupParameterNames​(AccessibleObject methodOrCtor, boolean throwExceptionIfMissing)` | Lookup the parameter names of a given method.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### __PARANAMER_DATA

          public static final String __PARANAMER_DATA

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### AnnotationParanamer

          public AnnotationParanamer()

    - #### AnnotationParanamer

          public AnnotationParanamer​(Paranamer fallback)

  - ### Method Detail

    - #### lookupParameterNames

          public String[] lookupParameterNames​(AccessibleObject methodOrConstructor)

      Description copied from interface: `Paranamer`
      Lookup the parameter names of a given method.
      Specified by:
        `lookupParameterNames` in interface `Paranamer`
      Parameters:
        `methodOrConstructor` - the `Method` or `Constructor` for which the parameter names are looked up.
      Returns:
        A list of the parameter names.

    - #### lookupParameterNames

          public String[] lookupParameterNames​(AccessibleObject methodOrCtor,
                                               boolean throwExceptionIfMissing)

      Description copied from interface: `Paranamer`
      Lookup the parameter names of a given method.
      Specified by:
        `lookupParameterNames` in interface `Paranamer`
      Parameters:
        `methodOrCtor` - the `Method` or `Constructor` for which the parameter names are looked up.
        `throwExceptionIfMissing` - whether to throw an exception if no Paranamer data found (versus return null).
      Returns:
        A list of the parameter names.

    - #### getNamedValue

          protected String getNamedValue​(Annotation ann)

      Override this if you want something other than JSR 330's Named annotation.

          return ((Named) ann).value();

      Parameters:
        `ann` - the annotation in question
      Returns:
        a the name value.

    - #### isNamed

          protected boolean isNamed​(Annotation ann)

      Override this if you want something other than JSR 330's Named annotation.

          return ann instanceof Named;

      Parameters:
        `ann` - the annotation in question
      Returns:
        whether it is the annotation holding the parameter name