• 反射注解的方式


     1 package 反射与注解;
     2 
     3 import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;
     4 
     5 import java.lang.annotation.*;
     6 import java.lang.reflect.Field;
     7 
     8 public class 反射注解 {
     9     public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
    10         Class<?> c1 = Class.forName("反射与注解.Student");
    11         Annotation[] declaredAnnotations = c1.getDeclaredAnnotations();
    12 
    13         //获得类注解
    14         for (Annotation declaredAnnotation : declaredAnnotations) {
    15             System.out.println(declaredAnnotation);
    16         }
    17 
    18         // 获取value的值
    19         dbChris annotation = c1.getAnnotation(dbChris.class);
    20         System.out.println(annotation.value());
    21 
    22 
    23         //获取指定列的注解
    24         Field age = c1.getDeclaredField("age");
    25         columnChris annotation1 = age.getAnnotation(columnChris.class);
    26         System.out.println(annotation1.colName());
    27         System.out.println(annotation1.type());
    28         System.out.println(annotation1.length());
    29 
    30     }
    31 }
    32 
    33 
    34 @dbChris("tStudent")
    35 class Student {
    36     @columnChris(colName = "dId", type = "int", length = 10)
    37     private int id;
    38     @columnChris(colName = "dAge", type = "int", length = 10)
    39     private int age;
    40     @columnChris(colName = "dName", type = "varchar", length = 20)
    41     private String name;
    42 
    43     public int getId() {
    44         return id;
    45     }
    46 
    47     public void setId(int id) {
    48         this.id = id;
    49     }
    50 
    51     public int getAge() {
    52         return age;
    53     }
    54 
    55     public void setAge(int age) {
    56         this.age = age;
    57     }
    58 
    59     public String getName() {
    60         return name;
    61     }
    62 
    63     public void setName(String name) {
    64         this.name = name;
    65     }
    66 
    67     public Student(int id, int age, String name) {
    68         this.id = id;
    69         this.age = age;
    70         this.name = name;
    71     }
    72 
    73     @Override
    74     public String toString() {
    75         return "Student{" +
    76                 "id=" + id +
    77                 ", age=" + age +
    78                 ", name='" + name + '\'' +
    79                 '}';
    80     }
    81 }
    82 
    83 
    84 @Target(ElementType.TYPE)
    85 @Retention(RetentionPolicy.RUNTIME)
    86 @interface dbChris {
    87     String value();
    88 }
    89 
    90 @Target(ElementType.FIELD)
    91 @Retention(RetentionPolicy.RUNTIME)
    92 @interface columnChris {
    93     String colName();
    94 
    95     String type();
    96 
    97     int length() default 10;
    98 }

    输出结果

  • 相关阅读:
    codevs1227 方格取数2 注意数组啊啊啊啊啊啊啊啊啊啊
    codevs1033 蚯蚓的游戏问题 裸最小费用最大流,注意要拆点
    模板题 codevs 1993 草地排水 想学习的请看链接
    java初级易错问题总结
    JAVA基本数据类型所占字节数是多少?
    forword和重定向有什么区别?
    Spring框架注解
    hibernate利用mysql的自增张id属性实现自增长id和手动赋值id并存
    eclispe中安装hibernate插件
    struts2使用模型传值
  • 原文地址:https://www.cnblogs.com/wooroc/p/15875270.html
Copyright © 2020-2023  润新知