美文网首页
@Retention作用详析

@Retention作用详析

作者: 陈大吼 | 来源:发表于2020-05-04 20:54 被阅读0次

    注解@Retention用来修饰注解,是注解的注解,称为元注解。
    Retention注解有一个属性value,是RetentionPolicy枚举类型,决定了Retention注解应该如何去保持。RetentionPolicy有3个值:CLASS RUNTIME SOURCE

    • RetentionPolicy.SOURCE:注解只保留在源文件中,编译时注解会被遗弃;
    • RetentionPolicy.CLASS:注解会保留到class文件,当class文件被Load时被遗弃,这是注解默认的生命周期;
    • RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,Load之后,仍然存在;
      这3个生命周期分别对应于:源文件---> .class文件 ---> 内存中的字节码
    如何选择呢?

    首先,要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。

    • 如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解
    • 如果编译时需要依赖注解进行预处理,比如生成一些辅助代码等,如 ButterKnife,就用 CLASS注解;
    • 如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。一般是供IDE使用

    相关文章

      网友评论

          本文标题:@Retention作用详析

          本文链接:https://www.haomeiwen.com/subject/pmxughtx.html