Java基础-注解和反射


前言

对于注解,我主要还是在自定义APT还有运行时反射获取类来让自己能够构建出复用性更高的代码逻辑。


知识点1-注解:

注解的应用场景由元注解@Retention来进行指定,共有三种选项可以进行进行选择,SOURCE,CLASS,RUNTIME,如下:

public enum RetentionPolicy {/*** Annotations are to be discarded by the compiler.*/SOURCE,/*** Annotations are to be recorded in the class file by the compiler* but need not be retained by the VM at run time.  This is the default* behavior.*/CLASS,/*** Annotations are to be recorded in the class file by the compiler and* retained by the VM at run time, so they may be read reflectively.** @see java.lang.reflect.AnnotatedElement*/RUNTIME
}

一,SOURCE源码,源码级别的注解

注解的生命周期只存在于源码范围内,常常用来在编译的时候通过APT(Annotation Processor Tools)来生成辅助类。我所见到的情况就是在编译的时候生成MVP框架辅助代码。

除了应用在APT之外,对于源码的注解还应用在IDE语法检查中,比如@IntDef。比如说,android对于资源的定义一般是通过定义一个id的方式来进行的,但是id往往是通过int来表示的。如果你定义一个方法,方法中需要传输比如说R.string类型的参数,这里就可以通过定义一个IDE语法检查的注解,那么在IDE编译的时候就能进行语法检查。

当然你的IDE必须要支持语法检查才行,你总不可能过分的要求一个“全裸”的文本编辑器给你做到这些吧= =,这个未免太过于苛刻了。

二,CLASS字节码,字节码级别的注解

注解的生命周期可以到达字节码范围内,这个就涉及到我的知识盲区了,我找一下资料研究研究。

字节码级别的注释的常见应用就是:字节码增强技术,也就是在字节码中写代码,在热修复中会有很大程度上的使用。

三,RUNTIME运行时

运行时级别的注解,也就是在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同的逻辑判定。


后记

本来也想讲讲反射的相关技术的,然后,说真的,反射这块涉及到的内容实在太大了。我真的并不认为自己在当前的情况中能够很好地将自己很好地将所有的这一切都融汇贯通,所以,对于反射这一块内容,等我理清楚了热修复,字节码这两块再专门再来料理你。

Java基础-注解和反射相关推荐

  1. java基础- 注解和反射

    1. 注解(Annotation) 1. 什么是注解 Annotation是从JDK5.0开始引入的新技术. Annotation的作用 : 不是程序本身,可以对程序作出解释.(这一点和注释(comm ...

  2. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  3. Java基础10(反射)

    Java基础10(反射) 1 什么是反射 官方解释:反射(reflection)技术通常被用来检测和改变应用程序在 Java 虚拟机中的行为表现.它是一个相对而言比较高级的技术,反射是一种强有力的技术 ...

  4. Java基础 --- 注解 Annotation

    Java基础 --- 注解 Annotation Java注解 Java自带的标准注解 自定义注解 Java注解 Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadat ...

  5. 夯实 Java 基础 - 注解

    夯实 Java 基础 - 注解 不知道大家有没有一种感觉,当你想要了解某个知识点的时候,就会发现好多技术类 APP 或者公众号在推一些关于这个知识点的文章.也许这就是大数据的作用,这也说明总有人比你抢 ...

  6. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

  7. java反射jdk1.8,Java基础----jdk1.8 反射实验

    Java基础----jdk1.8 反射实验 (写在最前:还没入门的搬砖工的一本正经的胡说八道) 引言:  最近做到的项目中,需要给对接方提供一个公共接口,根据对方传入的 XML 文件的 rootele ...

  8. Java基于注解和反射导入导出Excel

    代码地址如下: http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包 ...

  9. 厚积薄发打卡Day24 :狂神说Java之注解与反射<全网最全(代码+笔记)>

    原视频地址: [狂神说Java]注解和反射,强烈推荐大家学习 什么是注解 什么是注解? Annotation是从JDK5.0开始引入的新技术. Annotation的作用: 不是程序本身,可以对程序作 ...

最新文章

  1. python实例化是什么意思_类实例化和python中的’self’
  2. php jira,php – 为Jira的api添加附件
  3. SGU 275. To xor or not to xor
  4. python 字符串格式符
  5. C语言试题六十之请编写函数fun,计算并输出下列级数和:s=1/1*2+1/2*3+…+1/n(n+1)
  6. 一篇搞懂Android View
  7. HCIE-RS面试--STP弊端
  8. 解压版tomcat7配置
  9. excel规划求解功能总结
  10. python中读取xlsx文件
  11. 计算机共享网络的账号密码怎么设置密码,win10局域网共享怎么设置账号密码
  12. vue 之 ele上传文件 和 下载文件
  13. 无线串口服务器的配置与连接调试,使用WIFI串口服务器USR-WIFI232-604与485读卡器实现通信...
  14. 产生socket write error的原因
  15. stm32f103VCT6全新机器 做stm32开发板 原理图以及主要器件规格书
  16. 如何创建二维数组 微信小程序_微信小程序遍历二维数组
  17. Python 计算 瑞幸和星巴克 谁的门店最多
  18. ansible部署和基本的操作
  19. ListBox美化重绘,不积硅步无以至千里
  20. vs 没法f12_键盘快捷键 - F12不再适用于Visual Studio

热门文章

  1. 苹果手机新款_苹果又偷偷发布新品,这次真的是手机,新款iPhone SE来了
  2. java正则表达式所有字符串_java正则表达式获取字符串中所有匹配的内容
  3. Jmeter之控制线程执行到某个结果时退出执行(第二种解决方案)
  4. Git config 查看和设置配置信息
  5. Git的撤销操作 git commit --amend
  6. gdb coredump
  7. linux php-fpm启动失败,linux运行php-fpm遇到问题
  8. 计算机中文无敌版,奥特曼格斗进化3中文无敌版电脑版
  9. python中编写函数素数_如何用Python编写素数程序?
  10. java最最长的错误,Java开发中遇到最多的异常是什么?最后一个最多最难!