Points To Remember
- An annotation can be used as a replacement of interfaces.
- You can make both empty/marker annotations and annotations with methods.
- You can define the retention policy for the annotation and where the annotation can be used.
Program : Create A Custom Annotation
The following program creates a custom empty annotation.import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
public String name() default "table";
}
The following program creates a custom annotation with methods defined.
import java.lang.annotation.ElementType;In the above example the annotation @Column can be applied only to the fields of a class and not at class level or method level.
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {
public String name() default "";
}
@Table(name="user_table")
public class User {
@Column(name="ekiras")
private String username;
public String password;
}
The above code represents how we can use the annotations @Table and @Column to annotate in any pojo class like the class User mentioned above.
public class RunTest {
public static void main(String args[]){
test();
}
public static void test(){
Table table = User.class.getAnnotation(Table.class);
if(table!=null){
System.out.println("Class is annotated with @Table and name="+table.name());
Field[] fields = User.class.getFields();
for(Field field : fields){
Column column = field.getAnnotation(Column.class);
if(column!=null)
System.out.println("Field "+field.getName() +" annotated with @Column name="+column.name());
else {
System.out.println("Field "+field.getName() +" is not annotated with @Column");
}
}
}
}
}
Class is annotated with @Table and name=user_table
Field username annotated with @Column name=ekiras
Field password is not annotated with @Column
Comments
Post a Comment