For creating custom annotations we need to decide

For this, we have built in custom annotations. Check out these mostly used ones:

@Target

https://i.stack.imgur.com/JTB0w.png

@Retention

https://i.stack.imgur.com/P4Ota.png

Creating Custom Annotation

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

Using Custom Annotation

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

the value provided inside @CustomAnnotation will be consumed by an Annotationprocessor may be to generate code at compile time etc.