自定義註解和註解的相關使用

自定義註解類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 }
相關文章
相關標籤/搜索