java的注解

从注解(Annotation)开始
Annotation包图
在这里插入图片描述
简单介绍:

一、不是程序本身,对程序作出一定的解释;(这一点与注释相同)

二、可以被其他程序读取(如编译器),便于编译器的测试和验证,存储有关程序的额外信息;

反射机制读取注解:

简单测试类:

    public class TestClass {
        private String name;
        private String id;
        int address;
    }

定义注解便于对测试类进行解析:

    @Target(value = {ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ClassAnnotation {
          String value();
     
    }

在测试类上添加注解

    @ClassAnnotation("Table")    //类与数据库中的表对应
    public class TestClass {
        private String name;
        private String id;
        int address;
    }

定义注解便于对属性进行解析

    @Target(value = {ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface PropertyAnnotation {
        String  columnName();              //表中的列名(对应类中的属性名)
        String  type();                          //类型
        int length();                             //长度
    }

在属性上添加注解

    @ClassAnnotation("Table")    //类与数据库中的表对应
    public class TestClass {
        @PropertyAnnotation(columnName = "name",type = "String",length = 10)
        private String name;
        private String id;
        int address;
    }

编写实现类通过反射获取注解,并且获取属性注解和属性的详细信息

    public class Demo {
     
        public static void main(String[] args) {
            try {
                Class clazz  = Class.forName("com.zjf.Ann.TestClass");
                Annotation[] annotations = clazz.getAnnotations();                 //通过反射获取注解
               //获得类的所有注解
                for(Annotation a : annotations){
                    System.out.println(a);
                }
                //获得类的指定注解
                ClassAnnotation ca = (ClassAnnotation) clazz.getAnnotation(ClassAnnotation.class);
                System.out.println(ca.value());
     
                 //获得属性的注解
                Field f = clazz.getDeclaredField("name");
                PropertyAnnotation pa = f.getAnnotation(PropertyAnnotation.class);
                System.out.println(pa);                               
                //获取详细信息
                System.out.println(pa.columnName()+" ----- "+ pa.type()+"-------"+pa.length());
                }catch (Exception e){
                 e.printStackTrace();
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值