@Entity@) indicates to the compiler that what follows is an annotation. @Overridevoid mySuperMethod() { ... }@Author(  name = "Benjamin Franklin",  date = "3/27/2003")class MyClass() { ... }Or
@SuppressWarnings(value = "unchecked")void myMethod() { ... }@SuppressWarnings("unchecked")void myMethod() { ... }@Author(name = "Jane Doe")@EBookclass MyClass { ... }@Author(name = "Jane Doe")@Author(name = "John Smith")class MyClass { ... }new @Interned MyObject(); myString = (@NonNull String) str;
class UnmodifiableList<T> implements@Readonly List<@Readonly T> { ... }void monitorTemperature() throws@Critical TemperatureException { ... }public class Generation3List extends Generation2List {  // Author: John Doe  // Date: 3/17/2002  // Current revision: 6  // Last modified: 4/12/2004  // By: Jane Doe  // Reviewers: Alice, Bill, Cindy  // class code goes here}@interface ClassPreamble { String author(); String date(); int currentRevision() default 1; String lastModified() default "N/A"; String lastModifiedBy() default "N/A"; // Note use of array String[] reviewers();}@ClassPreamble(    author = "John Doe",    date = "3/17/2002",    currentRevision = 6,    lastModified = "4/12/2004",    lastModifiedBy = "Jane Doe",    // Note array notation    reviewers = {     "Alice",     "Bob",     "Cindy” })public class Generation3List extends Generation2List {// class code goes here}Note: To make the information in @ClassPreamble appear in Javadoc-generated documentation, you must annotate the @ClassPreamble definition with the @Documented annotation:
// import this to use @Documentedimport java.lang.annotation.*;@Documented@interface ClassPreamble {// Annotation element definitions  }A set of annotation types are predefined in the Java SE API. Some annotation types are used by the Java compiler, and some apply to other annotations.
java.lang are @Deprecated, @Override, and @SuppressWarnings // Javadoc comment follows
/** * @deprecated * explanation of why it was deprecated */@Deprecated   static void deprecatedMethod() {}}// mark method as a superclass method// that has been overridden@Override int overriddenMethod() { }// use a deprecated method and tell // compiler not to generate a warning  @SuppressWarnings("deprecation")   void useDeprecatedMethod() {       // deprecation warning       // - suppressed       objectOne.deprecatedMethod();   }@SuppressWarnings({"unchecked", "deprecation"})@SafeVarargs annotation, when applied to a method or constructor, asserts that the code does not perform potentially unsafe operations on its varargs parameter. @FunctionalInterface annotation, introduced in Java SE 8, indicates that the type declaration is intended to be a functional interface, as defined by the Java Language Specification.Annotations that apply to other annotations are called meta-annotations. There are several meta-annotation types defined in java.lang.annotation.
@Schedule(dayOfMonth="last")@Schedule(dayOfWeek="Fri", hour="23")public void doPeriodicCleanup() { ... }@Alert(role="Manager")@Alert(role="Administrator")public class UnauthorizedAccessException extends SecurityException {...}import java.lang.annotation.Repeatable;@Repeatable(Schedules.class)public @interface Schedule { String dayOfMonth() default "first"; String dayOfWeek() default "Mon"; int hour() default 12;}public @interface Schedules {   Schedule[] value();}It is important to design your annotation type carefully to ensure that the programmer using the annotation finds it to be as flexible and powerful as possible.
@NonNull String str;