注解保留策略说明

    技术2022-07-20  73

    目录

     

    RetentionPolicy.SOURCE

    RetentionPolicy.CLASS

    RetentionPolicy.RUNTIME


    本文用于说明注解的保留策略分类,以及策略的相关使用目的与方式。

     

    RetentionPolicy.SOURCE

    该注解在保留在.java文件中,在编译完成之后丢弃,即在.class文件中不会保留这个注解。

    一般用于在编译时,通过注解对即将生成的.class文件进行干预,以生成自身期望生成的.class文件的样子

    如:Lombok的@Data注解,会生成成员变量的get/set方法。即.class中会包含get/set方法(源代码.java文件中不需要编写get/set方法)

     

    RetentionPolicy.CLASS

    该注解保留在.class文件中,在运行环境VM中不保留该注解。

    .class文件是用于生成对象的基础,当存在注解时,通过相应的逻辑干预,生成与原生.class文件不同的对象。

    如:编织代理对象。

     

    RetentionPolicy.RUNTIME

    该注解保留在.class文件中,且在运行环境VM中保留该注解,在运行时,可以通过反射读取这些信息。

    在运行时保留注解可以在执行时,通过判断方法等是否含有指定的注解,从而在运行时干预方法的执行逻辑,执行期望的过程。

    如:动态代理。

    Processed: 0.009, SQL: 9