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 OptionalAnnotations of a certain type using annotations() or optionalAnnotation().

See also Annotation

no type hierarchy

Inherited Attributes
Attributes inherited from: Object
Inherited Methods
Methods inherited from: Object
Methods inherited from: ConstrainedAnnotation<Value,Values,ProgramElement>