@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface TargetLocations
@Target({ElementType.TYPE_USE})
, the given type qualifier may be
written only at locations listed in the @TargetLocations(...)
meta-annotation. @Target({ElementType.TYPE_USE})
together with no
@TargetLocations(...)
means that the qualifier can be written on any
type use.
This enables a type system designer to permit a qualifier to be written
only in certain locations. For example, some type systems' top and bottom
qualifier (such as
KeyForBottom
)
should only be written on an explicit wildcard upper or lower bound.
This meta-annotation is a declarative, coarse-grained approach to enable
that. A TypeValidator
must be
implemented if a more fine-grained control is necessary.
Modifier and Type | Required Element and Description |
---|---|
TypeUseLocation[] |
value
Type uses at which the qualifier is permitted to be written
in source code.
|
public abstract TypeUseLocation[] value