An annotation that may occur at most once at a given program element and only on certain program elements.
An optional annotation is declared simply by having the
annotation class satisfy OptionalAnnotation
instead of
Annotation
. For example the following would only be
allowed on class
declarations:
final annotation class ExampleClass() satisfies OptionalAnnotation<Example, ClassDeclaration> {}
At runtime a Declaration
instance can be queried for its OptionalAnnotation
s of a
certain type using annotations()
or
optionalAnnotation()
.
Annotation
no type hierarchy