【07】保留在字节码级别注解的应用场景

(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

保留在字节码级别注解的应用场景

1.注解的应用场景

(1)根据注解的保留级别不同,对注解的使用自然存在不同场景。

(2)由注解的三个不同保留级别可知,注解作用于:源码、字节码与运行时时你能举一些案例吗?

级别 技术 说明
源码 APT 在编译期能够获取注解声明的类,包括类中的所有成员信息,一般用于生成额外的辅助类。
字节码 字节码增强 在编译出class后,通过修改Class数据以实现修改代码逻辑目的。对于是否需要修改的区分或者修改为不同逻辑的判断可以使用注解
运行时 反射 在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同的逻辑判定。

2.保留在CLASS字节码级别注解的应用场景

(1)保留在CLASS字节码级别注解,在字节码增加技术中常用到,在编译出class后,通过修改Class数据以实现修改代码逻辑的目的。

(2)字节码在热修复的时候,会应用到插桩技术。

(3)在字节码中写代码。

(4)javap命令是反编译字节码命令,编译成可读性稍微强一些的文件。

2.1案例

在这里插入图片描述

在这里插入图片描述

(1)onCreate()方法上添加了@InjectTime注解,用来标记是否要对这个方法做一些增强。

(2)所以我们在做字节码操作的时候,就可以判断这个方法上面是否有这个注解,有这个注解就加入一段代码。

(3)这个注解必须是CLASS级别的,我们是在CLASS上去操作这个注解的,也就是说在RESOURCE之上的级别,可以是CLASS级别也可以是RUNTIME。

猜你喜欢

转载自blog.csdn.net/xiogjie_67/article/details/108628997