1. @TARGET
* 用于标注这个注解放在什么地方,类上,方法上,构造器上
* ElementType.METHOD 用于描述方法
* ElementType.FIELD 用于描述成员变量,对象,属性(包括enum实例)
* ElementType.LOCAL_VARIABLE 用于描述局部变量
* ElementType.CONSTRUCTOR 用于描述构造器
* ElementType.PACKAGE 用于描述包
* ElementType.PARAMETER 用于描述参数
* ElementType.TYPE 用于描述类,接口,包括(包括注解类型)或enum声明
2.@Retention
* 用于说明这个注解的生命周期
* RetentionPolicy.RUNTIME 始终不会丢弃,运行期也保留该注解。因此可以使用反射机制来读取该注解信息。
* 我们自定义的注解通常用这种方式
* RetentionPolicy.CLASS 在类加载的时候丢弃,在字节码文件的处理中有用。注解默认使用这种方式
* RetentionPolicy.SOURCE 在编译阶段丢弃,这些注解在编译结束后就不再有任何意义,所以他们不会写入字节码中
* @Override,@SuppressWarnings都属于这类注解。
* 我们自定义使用中一般使用第一种
* java过程为 编译-加载-运行
3. @Documented
* 将注解信息添加到文本中