Java四种元注解相关介绍

注解自Java1.5版本引入以来,不断简化了代码编写流程,逐渐成为必学技术之一。除了学习各种注解的用法和限制,我们还需要了解注解的组成。本文将分享对元注解的理解。

元注解是用来修饰注解的注解,位于java.lang.annotation包下。在自定义注解时,需要对注解进行一些限制,以确保注解的作用域。有的注解有属性,有的没有。一共有四个元注解,如下图所示:

定义一个注解时,使用 @interface 来修饰文件类型。接下来我们逐一分析这四个元注解。

@Documented

该注解用于声明注解是否能被Javadoc等API文档生成工具展示。如果某个注解上声明了@Documented,说明这个注解可以被生成文档的工具展示出来。

该注解使用了三个注解,其中包括自身和两个元注解。由于该注解没有属性,因此使用方法很简单,可以选择是否写该注解。

@Retention

该注解使用了@Documented,表明可以被文档生成工具显示出来。它还有一个属性,并且对自身使用了@Retention,并给了一个值->RetentionPolicy.RUNTIME。我们可以查看RetentionPolicy类中可以给出的值。

RetentionPolicy是一个枚举类,定义了三个常量:

  • SOURCE:编译器将丢弃注解。例如,@SuppressWarnings注解告诉编译器忽略某些警告信息,编译后不需要保留。
  • CLASS:编译器将注解记录在类文件中,但在运行时不需要保留。这是默认设置行为。
  • RUNTIME:注解将由编译器记录在类文件中,并在运行时由VM定义,因此可以反射性地读取。

@Target

该元注解使用了三个元注解,包括前面提到的两个和自身。此外,它的属性可以放一个枚举数组,枚举中声明了多个常量。

根据需要,我们可以选择这些常量,甚至可以多选。

例如,按照图片的写法,@annotationT既可以声明在字段上,又可以声明在方法上。

@Inherited

该注解可以被文档生成工具显示,不会被编译器和JVM丢弃,且使用了ANNOTATION_TYPE。因此,这个注解只能定义到注解上,用于规定注解的某些特性。

简而言之,如果想让自定义的注解被继承,可以在注解上使用@Inherited。

总结

以上是作用于所有注解的元注解的基本信息。了解每个元注解的意义将有助于理解JDK自带或第三方类库中定义或使用的注解。同时,也会方便我们自己去定义一些注解。当我们真正使用这些元注解去自定义属于自己的注解时,就会理解为什么注解使用如此普遍。

感谢各位大佬的阅读ORZ,如果能帮到你是我的幸运,如果本篇博客有任何问题欢迎留言指出,谢谢~

标签:游戏攻略