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将具有继承性。