• 自定义注解和注解的相关使用


    自定义注解类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 }
  • 相关阅读:
    bootstarp3
    Python高级编程技巧
    Python高级编程技巧
    Python面向对象编程
    Python面向对象编程
    Python面向对象编程
    Python面向对象编程
    文件读写
    Python函数-7 内置函数
    Python函数-6 装饰器
  • 原文地址:https://www.cnblogs.com/lltse/p/5463976.html
Copyright © 2020-2023  润新知