首页 > 其他分享 >@Retention(RetentionPolicy.RUNTIME)

@Retention(RetentionPolicy.RUNTIME)

时间:2024-04-05 19:00:19浏览次数:24  
标签:文件 生命周期 RetentionPolicy 注解 RUNTIME class Retention

注解按生命周期来划分可分为3类:

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。

那怎么来选择合适的注解生命周期呢?

首先要明确生命周期长度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解;如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,则可选用 SOURCE 注解。

标签:文件,生命周期,RetentionPolicy,注解,RUNTIME,class,Retention
From: https://www.cnblogs.com/isme-zjh/p/18116060

相关文章

  • Java Math类、System类、Runtime类
    Math类Java中的Math类是一个包含各种数学方法的内置类,它提供了一系列静态方法,用于执行各种数学计算。具体来说,Math类中的方法可以分为以下几类:基本数学运算:包括加法、减法、乘法和除法等。三角函数:如正弦(sin)、余弦(cos)和正切(tan)等。指数和对数函数:包括指数(exp)和自然对数(log)等......
  • vcruntime140.dll没有被指定在windows上运行
    在计算机使用过程中,我们常常会遇到一些错误提示或程序崩溃的情况。其中,vcruntime140.dll是一个重要的动态链接库文件,它对于Windows系统的正常运行起着至关重要的作用。本文将详细介绍vcruntime140.dll文件的属性以及其丢失对Windows系统的影响,和最重要的vcruntime140.dll丢失的......
  • go在处理批量下载时候出现fatal error: runtime: out of memory
    状况,测试环境8g内存程序运行之后还剩1g多空闲内存测试环境下载二十集MP4文件就会抛出oom 同时检测不到任何panic貌似是被liunx直接给干掉了本地环境16g内存同样的请求能够正常请求并且返回。postman也因为运行内存不够而闪退。使用powershell执行请求能正常返回二进制......
  • iOS - Runtime-isa详解(位域、union(共用体)、位运算)
    文章目录iOS-Runtime-isa详解(位域、union(共用体)、位运算)前言1.`位域`介绍1.1思路1.2示例-结构体1.3示例-union(共用体)1.3.1说明1.4结构体对比union(共用体)2.arm64架构对isa的优化2.1位域内容nonpointerhas_assochas_cxx_dtorshiftclsmagicweakly_referen......
  • iOS - Runtime - Class-方法缓存(cache_t)
    文章目录iOS-Runtime-Class-方法缓存(cache_t)1.散列表的存取值iOS-Runtime-Class-方法缓存(cache_t)Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度。(使用空间换时间的方式来提升速度)其中,_buckets就......
  • iOS - Runtime-消息机制-objc_msgSend()
    iOS-Runtime-消息机制-objc_msgSend()前言本章主要介绍消息机制-objc_msgSend的执行流程,分为消息发送、动态方法解析、消息转发三个阶段,每个阶段可以做什么。还介绍了super的本质是什么,如何调用的1.objc_msgSend执行流程OC中的方法调用,其实都是转换为objc_msgSend函......
  • System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3
    VS2022.netCore5.0项目编译没问题,运行时报这个错System.IO.FileNotFoundException:“Couldnotloadfileorassembly'System.Runtime,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'.系统找不到指定的文件。” 我这里遇到这个问题的原因是,v......
  • 分享一个项目:go `file_line`,在编译器得到源码行号,减少运行期runtime消耗
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯file_linehttps://github.com/ahfuzhang/file_lineLike__FILE__/__LINE__ofC:usegogeneratetogetsourcecodelinenumberatcompiletime.像C语言里面......
  • Flink: Function And Rich Function , 对比 Function ,Rich functions还提供了这些方法:o
    Flink:FunctionAndRichFunction,对比Function,Richfunctions还提供了这些方法:open、close、getRuntimeContext和setRuntimeContext序言    了解了Flink提供的算子,那我们就可以自定义算子了.自定义算子的目的是为了更加灵活的处理我们的业务数据,并将满足条件......
  • vue3 动态编译组件失败:Component provided template option but runtime compilation
    根据vue3官方文档路由,写了如下一个简单的页面来模拟路由的实现。为了减少*.vue文件的个数,在这个但页面中,使用defineComponent通过object定义组件。<scriptsetup>import{ref,computed,defineComponent}from'vue'constHome=defineComponent({template:`......