Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate.
Annotations have a number of uses, among them:
- Information for the compiler — Annotations can be used by the compiler to detect errors or suppress warnings.
- Compile-time and deployment-time processing — Software tools can process annotation information to generate code, XML files, and so forth.
- Runtime processing — Some annotations are available to be examined at runtime.
Annotations Basics
In its simplest form, an annotation looks like the following:
@Entity
The at sign character (@
) indicates to the compiler that what follows is an annotation. In the following example, the annotation’s name is Override
:
@Override void mySuperMethod() { ... }
The annotation can include elements, which can be named or unnamed, and there are values for those elements:
@Author( name = "Benjamin Franklin", date = "3/27/2003" ) class MyClass() { ... }
or
@SuppressWarnings(value = "unchecked") void myMethod() { ... }
If there is just one element named value
, then the name can be omitted, as in:
@SuppressWarnings("unchecked") void myMethod() { ... }
If the annotation has no elements, then the parentheses can be omitted, as shown in the previous @Override
example.
It is also possible to use multiple annotations on the same declaration:
@Author(name = "Jane Doe") @EBook class MyClass { ... }
If the annotations have the same type, then this is called a repeating annotation:
@Author(name = "Jane Doe") @Author(name = "John Smith") class MyClass { ... }