public class Foo {
private String name;
public Foo(@NonNull String name){...};
...
}
Here @NonNull is annotation which is processed compile time by the android studio to warn you that the particular function needs non null parameter.
There are three types of annotations.
Marker Annotation - annotation that has no method
@interface CustomAnnotation {}
Single-Value Annotation - annotation that has one method
@interface CustomAnnotation {
int value();
}
Multi-Value Annotation - annotation that has more than one method
@interface CustomAnnotation{
int value1();
String value2();
String value3();
}
For creating custom annotations we need to decide
For this, we have built in custom annotations. Check out these mostly used ones:
@Target
@Retention
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.