Creating User defined Annotation Class

text zoom

The more advanced uses of annotations include writing an annotation processor that can read a Java program and take actions based on its annotations. To make annotation information available at runtime, the annotation type itself must be annotated with @Retention(RetentionPolicy.RUNTIME)


The following example will create one Utility Class for processing the annotation, one class for defining the annotation and a third class to use the annotation and processor class.


 


Example:-


 


(1) HelloAnnotation Class.


 


package com.visualbuilder;


import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

public @interface HelloAnnotation
{
}


(2) Utility Class.


 


package com.visualbuilder;

 


import java.lang.reflect.Field;


 


public class Utility {


public static <T> void inject(Class<T> resolveeClass, T resolveeInstance) {
    Field[] fields = resolveeClass.getFields();
    if (fields != null) {
         for (Field field : fields) {
          if (field.getAnnotation(HelloAnnotation.class) != null) {
          try {
                field.set(resolveeInstance, "Hello, Annotation World!");
                } catch (IllegalAccessException e) {
                     e.printStackTrace();
               }
            }
        }
    }
  }
}


(2) CustomAnnotation Class.


 


package com.visualbuilder;

 


public class CustomAnnotation {



@HelloAnnotation
public String hello;


public static void main(String[] args) {
       CustomAnnotation object=new CustomAnnotation();
    Utility.inject(CustomAnnotation.class,object);
        System.out.println(object.hello);
     }


}


Output


The following output will be displayed.


 


Hello, Annotation World!


 

                    

Copyright © 2010 VisualBuilder. All rights reserved