We have already discussed the basics of annotation and Meta Annotation in JAVA. In this article i will explain how to read and write the custom annotation in JAVA.
To define custom Annotation, keyword interface is used preceded by @. Like interface, it also has the method declaration.
To make topic easy, lets I want to create the annotation CopyRight
package com.G2.Annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(value=RetentionPolicy.RUNTIME) public @interface CopyRight { public String owner(); public String location(); public String year(); }
To use this annotation in our class, we should use like:
package com.G2.Annotations; @CopyRight(location="Mumbai",owner="Jitendra Zaa",year="2011") public class TestAnnotations { }
Annotation can also have the default values while declaration.
Example:
package com.G2.Annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(value=RetentionPolicy.RUNTIME) public @interface CopyRight { public String owner() default "Jitendra Zaa"; public String location() default "Mumbai"; public String year() default "2011"; }
Program to read the Annotations:
package com.G2.Annotations; import java.lang.annotation.Annotation; @CopyRight(location="Mumbai",owner="Jitendra Zaa",year="2011") public class TestAnnotations { /** * @param args */ public static void main(String[] args) throws ClassNotFoundException { TestAnnotations obj = new TestAnnotations(); obj.display(); } public void display() throws ClassNotFoundException { Annotation[] annotations = TestAnnotations.class.getAnnotations(); System.out.println(annotations.length); for(Annotation a : annotations) { CopyRight r = (CopyRight)a; System.out.println("Location Value in Annotation : "+r.location()); System.out.println("Owner Value in Annotation : "+r.owner()); System.out.println("Year Value in Annotation : "+r.year()); } } }
Output:
1
Location Value in Annotation : Mumbai
Owner Value in Annotation : Jitendra Zaa
Year Value in Annotation : 2011
Leave a Reply