This annotation can be used by API or DSL writers to document parameters which accept a closure. In that case, using this annotation, you can specify what the delegate type of the 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:
// Document the fact that the delegate of the closure will be an ExecSpec ExecResult exec(@DelegatesTo(ExecSpec) Closure closure) { ... }
Modifiers | Name | Description |
---|---|---|
static @interface |
DelegatesTo.Target |
Type | Name and Description |
---|---|
int |
genericTypeIndex @default 1 |
int |
strategy @default Closure.OWNER_FIRST |
String |
target @default "" |
String |
type The type member should be used when the type of the delagate cannot be represented with value(), genericTypeIndex() or target(). |
Class |
value @default Target.class |
@default 1
@default Closure.OWNER_FIRST
@default ""
The type member should be used when the type of the delagate cannot be represented with value(), genericTypeIndex() or target(). In this case, it is possible to use a String to represent the type, at the cost of potential uncatched errors at compile time if the type is invalid and increased compile time. @default ""
@default Target.class