@Documented @Retention(RUNTIME) @Target(PARAMETER) public @interface DelegatesTo
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) { ... }
Modifier and Type | Optional Element | Description |
---|---|---|
int |
genericTypeIndex |
The index of the generic type that will be the type of the closure's delegate.
|
int |
strategy |
The
Closure.resolveStrategy used by the closure. |
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. |
String |
type |
The type member should be used when the type of the delegate cannot
be represented with
value() , genericTypeIndex() or
target() . |
Class |
value |
Class value
int strategy
Closure.resolveStrategy
used by the closure.int genericTypeIndex
@DelegatesTo.Target
annotated
parameter for this usage, with the index starting at 0.String target
@DelegatesTo.Target
annotated parameters, this
member should be set to the DelegatesTo.Target.value()
of the correct target.String type
value()
, genericTypeIndex()
or
target()
. In this case, it is possible to use a String to represent
the type, at the cost of potential uncaught errors at compile time if the
type is invalid and increased compile time.