This is required if you want to define your own annotations (or you want to know how an existing one behaves).
The
@Retention
annotation controls whether usages an annotation are preserved when the code is compiled from source to binary. This matters if you want to keep the information about something being annotated available for runtime (for example, to read the annotation information using reflection).