(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)好好活就是做有意义的事情.
(8)亡羊补牢,为时未晚
(9)科技领域,没有捷径与投机取巧。
(10)有实力,一年365天都是应聘的旺季,没实力,天天都是应聘的淡季。
(11)基础不牢,地动天摇
(12)写博客初心:成长自己,辅助他人。当某一天离开人世,希望博客中的思想还能帮人指引方向.
(13)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~
保留在字节码级别注解的应用场景
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。