Java四大元注解介绍

713 阅读2分钟
本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Java四大元注解介绍

什么是元注解?

元注解就是注解到注解上的注解。它们被用来提供对其它 annotation类型作说明。

Java5.0定义的元注解: @Retention@Documented@Target@Inherited,这些类型和它们所支持的类在java.lang.annotation包中可以找到。如图所示:

在这里插入图片描述

在这里插入图片描述

接下来我们看一下每个元注解的作用和相应分参数的使用说明。

@Documented

在这里插入图片描述

在这里插入图片描述

@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。

@Retention

Retention 的英文意为保留期的意思。当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的的存活时间

在这里插入图片描述

在这里插入图片描述

取值有如下三个:

在这里插入图片描述

在这里插入图片描述

SOURCE::注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。

CLASS: 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。

RUNTIME: 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

@Target

Target 是目标的意思,@Target 指定了注解运用的地方。当一个注解被 @Target 注解时,这个注解就被限定了运用的场景

在这里插入图片描述

在这里插入图片描述

它有如下取值:

在这里插入图片描述

在这里插入图片描述

ANNOTATION_TYPE:可以给一个注解进行注解

CONSTRUCTOR:可以给构造方法进行注解

FIELD:可以给属性进行注解

LOCAL_VARIABLE:可以给局部变量进行注解

METHOD:可以给方法进行注解

PACKAGE:可以给一个包进行注解

PARAMETER:可以给一个方法内的参数进行注解

TYPE:可以给一个类型进行注解,比如类、接口、枚举

@Inherited

Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说@Inherited注解了其他注解,其他再注解别人,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。

在这里插入图片描述

在这里插入图片描述

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface A {}
@A
public class B {}
public class C extends B {}

注解 A被 @Inherited 修饰,之后类 B 被 A 注解,类 C 继承 B,类 C 也拥有 A 这个注解。

微信搜索:R先生专栏,点关注不迷路!

  • END -