An annotation that may occur multiple times at a given program element, and only on certain program elemenets.
A sequenced annotation is declared simply by having the
annotation class satisfy SequencedAnnotation
instead of
Annotation
. For example the following would only be
allowed on class
declarations, functions or methods:
alias ExecutableDeclaration => ClassOrInterfaceDeclaration|FunctionDeclaration; "Documents a pattern in which the annotated element particpates." shared final annotation class Pattern(String name) satisfies SequencedAnnotation<Pattern, ExecutableDeclaration> {}
At runtime a Declaration
instance can be queried for its SequencedAnnotation
s of
a certain type using annotations()
or sequencedAnnotations()
.
Annotation
no type hierarchy