Package org.apache.tapestry5.plastic

## Class MethodDescription

- java.lang.Object
- - org.apache.tapestry5.plastic.MethodDescription

- All Implemented Interfaces:
    `Comparable<MethodDescription>`

      public class MethodDescription
      extends Object
      implements Comparable<MethodDescription>

  Describes a `PlasticMethod` in terms of a method name, a set of modifiers (public, private, static, final, etc.), a return type, types of method arguments, and types of checked exceptions. Types are represented as Java source names: either names of primitives ("void", "byte", "long") or fully qualified class names ("java.lang.Object", "java.lang.Runnable"). ASM refers to this as "class name". MethodDescriptions are immutable, and properly implement equals() and hashCode(); they are often used as keys in Maps. The natural sort order for a MethodDescription is ascending order by method name, then descending order by number of parameters (for the same name). Sort order is not currently specified for overrides of the same method with the same number of parameters. TODO: Handling generic types.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `String[]` | `argumentTypes` | A non-null array of Java source names for arguments.
    `String[]` | `checkedExceptionTypes` | A non-null array of Java source names for checked exceptions.
    `String` | `genericSignature` |
    `String` | `methodName` | The name of the method.
    `int` | `modifiers` | The full set of modifier flags for the method.
    `String` | `returnType` | The Java source name for the return type, e.g., "void", "short", "java.util.Map", "java.lang.String[]".

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MethodDescription​(int modifiers, String returnType, String methodName, String[] argumentTypes, String genericSignature, String[] checkedExceptionTypes)` |
    `MethodDescription​(Method method)` | Creates a MethodDescription from a Java Method.
    `MethodDescription​(String returnType, String methodName, String... argumentTypes)` | Convenience constructor for public methods that have no checked exceptions.
    `MethodDescription​(MethodDescription description, String[] checkedExceptionTypes)` | Convenience constructor for copying a MethodDescription with different exception types.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `compareTo​(MethodDescription o)` |
    `boolean` | `equals​(Object obj)` |
    `int` | `hashCode()` |
    `String` | `toShortString()` | A string used to identify the method, containing just the method name and argument types (but ignoring visibility, return type and thrown exceptions).
    `String` | `toString()` |
    `MethodDescription` | `withModifiers​(int newModifiers)` |

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

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

- - ### Field Detail

    - #### modifiers

          public final int modifiers

      The full set of modifier flags for the method.

    - #### returnType

          public final String returnType

      The Java source name for the return type, e.g., "void", "short", "java.util.Map", "java.lang.String[]".

    - #### methodName

          public final String methodName

      The name of the method.

    - #### genericSignature

          public final String genericSignature

    - #### argumentTypes

          public final String[] argumentTypes

      A non-null array of Java source names for arguments. Do not modify the contents of this array.

    - #### checkedExceptionTypes

          public final String[] checkedExceptionTypes

      A non-null array of Java source names for checked exceptions. Do not modify the contents of this array.

  - ### Constructor Detail

    - #### MethodDescription

          public MethodDescription​(String returnType,
                                   String methodName,
                                   String... argumentTypes)

      Convenience constructor for public methods that have no checked exceptions.
      Parameters:
        `returnType` - return type as type name
        `methodName` - name of method
        `argumentTypes` - type names for arguments

    - #### MethodDescription

          public MethodDescription​(MethodDescription description,
                                   String[] checkedExceptionTypes)

      Convenience constructor for copying a MethodDescription with different exception types.
      Since:
        5.4.4

    - #### MethodDescription

          public MethodDescription​(int modifiers,
                                   String returnType,
                                   String methodName,
                                   String[] argumentTypes,
                                   String genericSignature,
                                   String[] checkedExceptionTypes)

      Parameters:
        `modifiers` -
        `returnType` - Java source name for the return type
        `methodName` -
        `argumentTypes` - may be null
        `genericSignature` - TODO
        `checkedExceptionTypes` - may be null

    - #### MethodDescription

          public MethodDescription​(Method method)

      Creates a MethodDescription from a Java Method. The generic signature will be null.

  - ### Method Detail

    - #### withModifiers

          public MethodDescription withModifiers​(int newModifiers)

    - #### compareTo

          public int compareTo​(MethodDescription o)

      Specified by:
        `compareTo` in interface `Comparable<MethodDescription>`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals​(Object obj)

      Overrides:
        `equals` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### toShortString

          public String toShortString()

      A string used to identify the method, containing just the method name and argument types (but ignoring visibility, return type and thrown exceptions).
      Returns:
        method identifier