An annotation constrained to appear only on certain program elements, and only with certain values.
The type parameters encode information about the annotation type and its constraints:
Valuerepresents the type of the annotation itself,
ProgramElementrepresents a constraint on the
Annotatedmeans there is no constraint, and
Typeis a constraint on the metamodel type of the annotated program element, for example, , where
Anythingmeans there is no constraint, and that the program element need not have a metamodel type.
no type hierarchy