think in java 注解学习笔记

注解为我们在代码中添加信息提供一种形式化的方法, 使我们可以在稍后某个时刻非常方便的时候使用这些信息. 注解用来帮助我们将元数据(比如配置信息)与代码结合起来, 因为这就限定了注解的使用范围, 只有那些与代码结合非常紧密, 而java代码又不能很好(或很难)表述的配置信息才是使用注解的最佳场景. 注解的另一个作用可以用来简化一些重复性的工作, 以及自动化某些过程 注解在某种程度上可以看成修饰符的一种 注解的定义跟接口很像, 最终将编译成class文件 @Target, @Retention是注解的注解, 用来对注解进行定义, @Target用来说明注解将用在什么地方(方法or属性), @Retention用来说明注解在何时可用(Source 源码, Class 类文件, Runtime 运行时) 注解定义中, 会指定该注解包含的一些元素(也是元数据的定义), 与接口不同的是, 可以给这些元素指定一些默认值, 然后可以借助程序或者工具对这些元素的值(真正的元数据)进行分析处理, 这个正式注解强大所在 注解需要借助注解处理器来对注解的元数据进行解析处理, 注解处理器是注解的配套设施之一, 而注解处理器在处理注解元数据主要借助了JDK 5的反射机制, 比较有用的是AnnotatedElement接口的getDeclaredMethods()方法和getAnnotation()方法. 注解元素类型只能是:所有的基本类型(int, float, boolean等), String, Class, enum, Annotation, 以及以上类型的数组 注解不支持继承 注解元素的默认值必须是一个确定的值, 而且不能用null作为默认值, 因此, 使用空字符串或0作为默认值是一种常用的做法

@Inherited 这个注解的用法是:

如果你定义的注解加了该注解, 那么在子类上可以通过getAnnotations()可以取到父类用到的该annotation, 否则会取不到, 其他不会影响到

经验分享 程序员 微信小程序 职场和发展