Java Metadata Facility
The Java Metadata Facility is introduced by Java Specification Request (JSR) 175 , and incorporated into the Java language specification  in version 1.5 of the language. The specification allows annotations on Java program elements: classes, interfaces, methods, and fields. Annotations give programmers a uniform way to add metadata to program elements that can be used by code checkers, code generators, or other compile-time or runtime components.
They cannot be generic.
They cannot extend other annotation types or interfaces.
Methods cannot have any parameters.
Methods cannot have type parameters.
Methods cannot throw exceptions.
The return type of methods of an annotation...