Java注解备忘

2021-12-27  本文已影响0人  静水红阳

基本概念

注解,Annotation,是在JDK 1.5 及后续版本引入的一个特性,可以声明在类,字段,方法等前面,用来对这些元素进行说明和注释。

一、元注解

Java中定义了一些元注解,用来对其他annotation进行说明,主要包括有如下四个:

下面我们对每一个元注解的作用及常用参数进行说明。

1. @Target

该元注解用来描述注解的使用范围,即被标识的注解能够用在什么地方。常用的取值如下:

2. @Retention

该元注解用来定义Annotation的保留时长

某些Annotation仅出现在源代码中,而被编译器丢弃;而一部分Annotation会被编译在class文件中。

常用的取值如下:

显然生命周期长度:SOURCE < CLASS < RUNTIME。

生命周期选择

对于注解生命周期的选择可以参考如下使用:

  1. 如果需要在运行时去动态获取注解信息,则只能使用RUNTIME
  2. 如果是需要在编译时进行一些预处理操作(如本文的APT),则可以选择使用CLASS
  3. 如果只是做一些检查性的操作,如@Override 和@SuppressWarnings,则可以使用SOURCE。

3. @Documented

此元注解表明这个注解应该被 javadoc工具记录.

默认情况下,javadoc是不包括注解的.

但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。

4. @Inherited

@Inherited 元注解是一个标记注解,阐述了某个被标注的类型是被继承的。

如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

效果

二、自定义注解

自定义注解可以使用@interface来处理,用来自动继承java.lang.annotation.Annotation接口,由编译程序自动完成其他细节,代码格式如下:

元注解
public @interface 注解名 {
    定义体
}

注解参数的可支持数据类型:

  1. 所有基本数据类型(int,float,boolean,byte,double,char,long,short)
  2. String类型
  3. Class类型
  4. enum类型
  5. Annotation类型
  6. 以上所有类型的数组
Annotation类型的参数设置

参数可以遵循如下使用:

  1. 只能使用public或者默认default这两个访问权限修饰
  2. 参数成员只能用基本类型
  • byte
  • short
  • char
  • int
  • long
  • float
  • double
  • boolean
  • String,Enum,Class,annotations等数据类型
  1. 如果只有一个参数成员,最好把参数名称设为"value",后加小括号.

定义了注解之后需要生成注解处理器来对注解进行处理,如采用APT技术。

上一篇下一篇

猜你喜欢

热点阅读