java元注解_Java的元注解

本文详细介绍了Java注解的用途,包括提供编译器信息、辅助代码生成和运行时处理。同时,解释了元注解的种类,如@Retention用于控制注解的生命周期,@Documented将注解内容包含进文档,@Target指定注解的应用位置,@Inherited允许子类继承父类注解,以及Java 1.8中引入的@Repeatable允许注解重复使用。通过这些元注解,开发者可以更精确地控制和使用注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注解是一系列元数据,它利用元数据来解释、说明程序代码(即被注解的对象)。注解的作用包括:

1、提供信息给编译器,编译器可以利用注解来探测错误和警告信息。

2、软件工具可以利用注解信息来生成代码、HTML文档或者做其他相应处理。

3、运行时的处理,某些注解可以在程序运行时接受代码的提取。

注解通过关键字@interface进行定义,如:

public @interface TestAnnotation {}

元注解就是加到注解上的注解,它的目的是解释、说明其他普通注解。元注解有@Retention、@Documented、@Target、@Inherited、@Repeatable共5种。

元注解@Retention应用到一个注解时,说明该注解的存活时间。它的取值包括RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。RetentionPolicy.SOURCE表明注解只在源码阶段保留,在编译器进行编译时被丢弃;RetentionPolicy.CLASS表明注解被保留到编译进行的时候,而不会被加载到JVM中;RetentionPolicy.RUNTIME表明注解可以保留到程序运行的时候,它会被加载进入JVM中,在程序运行时可以获取到它们。

元注解@Documented表示注解内容会被Javadoc工具提取成文档,文档内容会因为注解内容的不同而不同。

元注解@Target表示注解用于什么地方,如类型、方法和域等。元注解@Target的取值包括ElementType.FIELD、ElementType.METHOD、ElementType.PARAMETER、ElementType.CONSTRUCTOR、ElementType.LOCAL_VARIABLE、ElementType.TYPE、ElementType.ANNOTATION_TYPE、ElementType.PACKAGE。其中,ElementType.FIELD表示对字段、枚举常量的注解,ElementType.METHOD表示对方法的注解,ElementType.PARAMETER表示对方法参数的注解,ElementType.CONSTRUCTOR表示对构造函数的注解,ElementType.LOCAL_VARIABLE表示对局部变量的注解,ElementType.ANNOTATION_TYPE表示对注解类型的注解,ElementType.PACKAGE表示对包的注解,ElementType.TYPE表示对接口、类、枚举、注解等任意类型的注解。

被元注解@Inherited注解过的注解作用于父类后,子类会自动继承父类的注解。

元注解@Repeatable是在Java1.8中引入的注解,被注解后的普通注解可以被重复多次作用于一个类并传入不同的参数,代码示例如下:

@interface Persons {

Person[]value();

}

@Repeatable(Persons.class)

@interface Person {

String role default  "";

}

@Person(role="artist")

@Person(role="coder")

@Person(role="PM")

public class SuperMan {

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值