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, 否则会取不到, 其他不会影响到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值