Package: groovy.transform.stc

## [Java] Class PickAnyArgumentHint

- groovy.transform.stc.PickAnyArgumentHint

-     public class PickAnyArgumentHint
      extends SingleSignatureClosureHint

  Base class for hints which use the type of a parameter of the annotated method as the signature. This can optionally use a generic type of the selected parameter as the hint. For example, imagine the following method:

  `void foo(A firstArg, B secondArg, Closure c) {...}`

  If the c closure should be `{ B it `->` ...}`, then we can see that the parameter type should be picked from the second parameter of the foo method, which is what PickAnyArgumentHint lets you do.

  Alternatively, the method may look like this:

  `void <T> foo(A<T> firstArg, B secondArg, Closure c) {...}`

  in which case if you want to express the fact that c should accept a <T> then you can use the genericTypeIndex value.

  This class is extended by several hint providers that make it easier to use as annotation values.

  Since:
    2.3.0

- - ### Constructor Summary

    Constructors
    Constructor and description
    `PickAnyArgumentHint()` Creates an argument picker which extracts the type of the first parameter.
    `PickAnyArgumentHint(int parameterIndex, int genericTypeIndex)` Creates a picker which will extract the parameterIndex-th parameter type, or its genericTypeIndex-th generic type genericTypeIndex is >=0.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public ClassNode[]` | `getParameterTypes(MethodNode node, String[] options, SourceUnit sourceUnit, CompilationUnit unit, ASTNode usage)` * Returns the single parameter signature accepted by the hinted closure. * * Parameters: `node` - the annotated method node * `options` - the hint options * `sourceUnit` - the current source unit * `unit` - the current compilation unit * `usage` - the closure expression or related AST node * Returns: the inferred parameter types

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class SingleSignatureClosureHint` | `getClosureSignatures, getParameterTypes`
    `class ClosureSignatureHint` | `findClassNode, getClosureSignatures, pickGenericType, pickGenericType`

- - ### Constructor Detail

    - #### public PickAnyArgumentHint()

      Creates an argument picker which extracts the type of the first parameter.

    - #### public PickAnyArgumentHint(int parameterIndex, int genericTypeIndex)

      Creates a picker which will extract the parameterIndex-th parameter type, or its genericTypeIndex-th generic type genericTypeIndex is >=0.

      Parameters:
        `parameterIndex` - the index of the parameter from which to extract the type
        `genericTypeIndex` - if >=0, then returns the corresponding generic type instead of the parameter type.

  - ### Method Detail

    - #### public ClassNode[] getParameterTypes(MethodNode node, String[] options, SourceUnit sourceUnit, CompilationUnit unit, ASTNode usage)

      * Returns the single parameter signature accepted by the hinted closure. * *

      Parameters:
        `node` - the annotated method node *
        `options` - the hint options *
        `sourceUnit` - the current source unit *
        `unit` - the current compilation unit *
        `usage` - the closure expression or related AST node *
      Returns:
        the inferred parameter types