Java中的注解
注解的概述
- 从JDK5.0开始,Java增加了对元数据(metaData)的支持,也就是Annotation(注解)
- Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载、运行时被读取,并执行相应的处理。
常见的Annotation示例
示例一:生成文档相关的注解
- @author 标明开发开模块的作者,多个作者之间使用,分隔
- @version 标明该类模块的版本
- @see 参考转向,也就是相关主题
- @since 从那个版本开始增加的
- @param 对方法中某参数的说明,如果没有参数就不能写
- @return 对方法返回值的说明,如果方法的返回值类型是void就不能写
其中@param,@return,@exception这三个标记都是只用于方法的
@param的格式要求:@param形参名 形参类型 形参说明
@return 的格式要求:@return返回值类型 返回值说明
@exception的格式要求:@exception 异常类型 异常说明
@param 和 @exception可以并列多个
示例二:在编译时进行格式检查(JDK内置的三个基本注解)
- @Override:限定重写父类方法,该注解只能用于方法
- @Deprecated:用于表示所修饰的元素(类、方法等)已过时,通常所修饰的结果危险或存在更好的选择
- @SuppressWarnings:一直编译器警告
如何自定义注解,参照@SuppressWarning
定义新的Annotation类型使用 @interface 关键字
自定义注解自动继承了java.long.annotation.Annotation接口
Annotation的成员变量的在Annotation定义中以无参数方法的形式来声明,其方法名和返回值定义了该成员的名字和类型,我们称为配置参数,类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、以上所有类型的数组
可以在定义Annotation的成员变量时为其指定初始值,指定成员变量的初始值可食用default关键字
如果只有一个参数成员,建议使用参数名为value
如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认值,格式是:“参数名=参数值”,如果只有一个参数成员,且名称为value,可以省略value=
自定义注解通常都会指明两个元注解:Retention、Target
JDK中的四种元注解
JDK中的元注解用于修饰其他Annotation定义
JDK5.0提供了4个标准的meta-annotation类型,分别是:
- Retention:只能那个用于修饰一个Annotation定义,用于指定该Annotatino的生命周期,@Retention包含一个RetentionPolicy类型的成员变量,使用@Retention时必须为该value成员变量指定值
- Target:用于修饰Annotation能用于修饰哪些程序元素
- Document:用于指定该元注解修饰的注解类将别javadoc工具提取成文档,默认javadoc是不包括注解的
- Inherited:被它修饰的Annotation将具有继承性。