一、Annotation的概念
Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据。
二、Annotation的作用
(1)生成文档 : 可以为类、方法等生成特定的java doc。
(2)编译处理 :在编译的时候,可以用注解处理器,对其中的源代码进行处理。
(3)运行控制:可以在运行时标注类、方法等,用反射的方式达到特殊的流程控制等目的。
三、JDK元注解
(1)@Documented
@Documented Annotation的作用生成Javadoc时包含该注解。
(2)@Retention
@Retention Annotation的作用是标注注解的生命周期,取值RetentionPolicy 枚举。
public enum RetentionPolicy {
//注解生存周期是Java的原文件,例如 Override
SOURCE,
//注解生存周期是Java的Class文件。底层开发人员使用,用于根据Class文件生成其他文件。
CLASS,
//注解生存周期是Java的运行时。
RUNTIME
}
(3)@Target
@Target Annotation的作用是说明注解的作用对象,取值
public enum ElementType {
//类、注解、枚举
TYPE,
//字段、枚举值
FIELD,
//方法
METHOD,
//参数
PARAMETER,
//构造函数
CONSTRUCTOR,
//局部变量
LOCAL_VARIABLE,
//注解
ANNOTATION_TYPE,
//包
PACKAGE,
//类型变量的声明语句
TYPE_PARAMETER,
//类型的任何语句
TYPE_USE
}
(4)@Inherited
@Inherited Annotation的作用是如果被@Inherited标注的注解,在类上面使用时,子类会自动继承此注解,否则的话,子类不会继承此注解。
四、JDK内置注解
(1)@Override
用于修饰此方法覆盖了父类的方法。
**(2)@Deprecated **
用于标记修饰对象已经过时。
(3)@SuppressWarnnings 抑制编译器警告
名称 | 说明 |
---|---|
1.deprecation | 使用了不赞成使用的类或方法时的警告 |
2.unchecked | 执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型 |
3.fallthrough | 当 Switch 程序块直接通往下一种情况而没有 Break 时的警告 |
4.path | 在类路径、源文件路径等中有不存在的路径时的警告 |
5.serial | 当在可序列化的类上缺少 serialVersionUID 定义时的警告 |
6.finally | 何 finally 子句不能正常完成时的警告 |
7.unused | 代码中的变量或方法没有被使用产生的警告 |
8.rawtypes | 使用泛型时没有指定类型的警告 |
9.all | 关于以上所有情况的警告 |
五、自定义Annotation
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//设置是否使用在Javadoc中
@Documented
//设置生命周期
@Retention(RetentionPolicy.RUNTIME)
//设置作用对象
@Target(ElementType.TYPE)
public @interface 注解名称 {
//根据需要编写成员方法
}
网友评论