自定義註解類MyAnnotationjava
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 }
自定義註解的使用PersonEntitythis
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 }
自定義註解的測試類AnnotationDemospa
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 }