1、注解的分类
按照运行机制分
1)源码注解:注解只在源码中存在,编译成.class文件后就不存在了。
2)编译时注解:在源码和.class文件中都存在。JDK中常见注解大多都为编译时注解。
3)运行时注解:在代码运行阶段起作用,有可能会影响代码逻辑的注解。JavaEE框架中大多数注解都为此类型。
按照来源分
1)JDK注解:JDK中为我们提供的注解。
2)第三方注解:在使用第三方开源框架时,第三方为我们封装的注解。
3)自定义注解:我们在开发中自己定义的注解。
元注解
元注解可以理解为注解的注解。
2.自定义注解
1)语法要求
使用@interface关键字
成员以无参无异常的方式声明
default成员可以给定默认值
成员的类型是受限制的,合法的成员类型包括java的8个基本类型以及String、Class、Annotation、Enumeration
如果注解中只有一个成员,成员的名字必须为value(),使用时可以忽略成员名和等号(赋值号)
注解类可以没有成员,没有成员的注解称为标识注解。
2)元注解
@Target:注解的作用域
@Retention:标识注解的生命周期
@Inherited:允许子注解继承
@Document:生成JavaDoc的时候使用的注解
3.使用自定义注解
1)语法
@<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,...)
4.解析注解
1)使用类加载器加载类
2)找到类上面的注解
3)拿到注解实例
4)拿到方法注解实例