Package groovy.lang

Annotation Type DelegatesTo


@Documented @Retention(RUNTIME) @Target(PARAMETER) public @interface DelegatesTo
This annotation can be used by API or DSL writers to specify what the delegate type of a closure will be. This is important for IDE support.

This annotation can also be used to help the type checker (TypeChecked) which would not report errors then if the delegate is of the documented type. Of course, it is also compatible with CompileStatic.

Example:

 // Declare that the delegate of the closure will be an ExecSpec
 ExecResult exec(@DelegatesTo(ExecSpec) Closure closure) { ... }
 
Since:
2.1.0
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static @interface 
    Specifies the delegate for a @DelegatesTo annotated parameter of the same method.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    int
    The index of the generic type that will be the type of the closure's delegate.
    int
    The closure's resolve strategy.
    In cases when there are multiple @DelegatesTo.Target annotated parameters, this member should be set to the DelegatesTo.Target.value() of the correct target.
    The type member should be used when the type of the delegate cannot be represented by value() or target().
    The closure's delegate type, if not using DelegatesTo.Target or type().
  • Element Details

    • value

      Class value
      The closure's delegate type, if not using DelegatesTo.Target or type().
      Default:
      groovy.lang.DelegatesTo.Target.class
    • strategy

      int strategy
      The closure's resolve strategy.
      See Also:
      Default:
      0
    • genericTypeIndex

      int genericTypeIndex
      The index of the generic type that will be the type of the closure's delegate. The generic types are considered with respect to the @DelegatesTo.Target annotated parameter for this usage, with the index starting at 0.
      Default:
      -1
    • target

      String target
      In cases when there are multiple @DelegatesTo.Target annotated parameters, this member should be set to the DelegatesTo.Target.value() of the correct target.
      Default:
      ""
    • type

      String type
      The type member should be used when the type of the delegate cannot be represented by value() or target(). In this case, it is possible to use a string to represent the type, at the cost of more compile time and potential uncaught load errors if the type is invalid.
      Since:
      2.4.0
      Default:
      ""