An annotation constrained to appear only on certain program elements, and only with certain values.
This interface should never be satisfied directly by any
annotation type. Instead, either OptionalAnnotation or
SequencedAnnotation should be satisfied by the
annotation type.
The type parameters encode information about the annotation type and its constraints:
Value represents the type of the annotation itself,ProgramElement represents a constraint on theClassDeclaration
or Module, where
Annotated means there is no constraint, andType is a constraint on the metamodel type of the
annotated program element, for example,
Function<Float,[Float,Float]>
(ceylon.language.meta.model::Function),
where Anything means there is no constraint, and that
the program element need not have a metamodel type.Annotation, OptionalAnnotation, SequencedAnnotationno type hierarchy