anotation in Java

An annotation is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, parameters and Java packages may be annotated. Like Javadoc tags, Java annotations can be read from source files. Unlike Javadoc tags, Java annotations can also be embedded in and read from Java class files generated by the Java compiler. This allows annotations to be retained by the Java virtual machine at run-time and read via reflection. It is possible to create meta-annotations out of the existing ones in Java.
* Annotations applied to Java code
    * @Override - Checks that the method is an override. Causes a compilation error if the method is not found in one of the parent classes or implemented interfaces.
    * @Deprecated - Marks the method as obsolete. Causes a compile warning if the method is used.
    * @SuppressWarnings - Instructs the compiler to suppress the compile time warnings specified in the annotation parameters.
* Annotations applied to other annotations ("Meta Annotations")
    * @Retention - Specifies how the marked annotation is stored, whether in code only, compiled into the class, or available at runtime through reflection.
    * @Documented - Marks another annotation for inclusion in the documentation.
    * @Target - Marks another annotation to restrict what kind of Java elements the annotation may be applied to.
    * @Inherited - Marks another annotation to be inherited to subclasses of annotated class (by default annotations are not inherited by subclasses).
    * @SafeVarargs - Suppress warnings for all callers of a method or constructor with a generics varargs parameter, since Java 7.
    * @FunctionalInterface - Specifies that the type declaration is intended to be a functional interface, since Java 8.
    * @Repeatable - Specifies that the annotation can be applied more than once to the same declaration, since Java 8.