标签:
自定义注解类MyAnnotation
1 package lltse.base.annotationdemo; 2 3 import java.lang.annotation.Retention; 4 import java.lang.annotation.RetentionPolicy; 5 6 //编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 7 @Retention(value=RetentionPolicy.RUNTIME) 8 public @interface MyAnnotation 9 { 10 //可以设置默认值,调用的时候即可不写此属性 11 String name() default "zhangsan"; 12 13 //int 类型 14 //int age(); 15 16 //value 17 //int value(); 18 19 //数组 20 int [] value(); 21 22 }
自定义注解类Table
1 package lltse.base.annotationdemo; 2 3 import java.lang.annotation.Retention; 4 import java.lang.annotation.RetentionPolicy; 5 6 //RetentionPolicy.RUNTIME 编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 7 //RetentionPolicy.CLASS 编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。这是默认的行为。 8 //RetentionPolicy.SOURCE 编译器要丢弃的注释。 9 10 @Retention(RetentionPolicy.RUNTIME) 11 public @interface Table 12 { 13 /*当此处的属性值仅有一个,且名称为value的时候。 14 调用此注解的时候不需要用value= 只需标出值即可。如:Table("tb_person")*/ 15 //String value(); 16 17 String name(); 18 19 }
自定义注解的使用Student
1 package lltse.base.annotationdemo; 2 3 //@MyAnnotation(name="lisi") 4 //@MyAnnotation(age=30) 5 //@MyAnnotation(30) 6 @MyAnnotation({14,29,40}) 7 public class Student 8 { 9 private int num; 10 11 public int hashCode() 12 { 13 return num; 14 } 15 16 public boolean equals(Object o) 17 { 18 return true; 19 } 20 }
自定义注解的使用PersonEntity
1 package lltse.base.annotationdemo; 2 3 @Table(name="db_person") 4 public class PersonEntity 5 { 6 private String cardId; 7 8 private String sex; 9 10 public String getCardId() { 11 return cardId; 12 } 13 14 public void setCardId(String cardId) { 15 this.cardId = cardId; 16 } 17 18 public String getSex() { 19 return sex; 20 } 21 22 public void setSex(String sex) { 23 this.sex = sex; 24 } 25 26 27 }
自定义注解的测试类AnnotationDemo
1 package lltse.base.annotationdemo; 2 3 import java.util.Arrays; 4 5 public class AnnotationDemo { 6 7 /** 8 * @param args 9 */ 10 public static void main(String[] args) 11 { 12 /*此处演示的是得到类的注解信息。 13 获取方法的注解和获取类的注解方式类似,先通过反射获取方法。 14 然后通过方法的getAnnotation获取方法的注解*/ 15 Class clazz = Student.class; 16 MyAnnotation myAnnotation = (MyAnnotation)clazz.getAnnotation(MyAnnotation.class); 17 //myAnnotation.name()此处获取的值为注解定义设置的默认值 18 //System.out.println(" name:>>>>"+myAnnotation.name()); 19 //System.out.println(" age:>>>>"+myAnnotation.age(); 20 //System.out.println(" value:>>>>"+myAnnotation.value(); 21 System.out.println(" value:>>>>"+Arrays.toString(myAnnotation.value())); 22 23 24 //Spring data jpa中即用这种注解方式。需要将表名获取作为条件使用 25 Class personClazz = PersonEntity.class; 26 Table table = (Table)personClazz.getAnnotation(Table.class); 27 System.out.println("Table name:>>>"+table.name()); 28 29 30 } 31 32 }
标签:
原文地址:http://www.cnblogs.com/lltse/p/5463976.html