java看源码必知的几个注解

本文详细介绍了Java元注解的功能及使用方式,包括@Retention、@Target、@Documented、@Inherited和@Repeatable等元注解的作用及应用场景。

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

java元注解

 

 

目录

java元注解

@Retention

@Target

@Documented

@Inherited

@Repeatable


 

@Retention

注释保留在哪个阶段的意思

比如: @Retention(RetentionPolicy.SOURCE) 注解存在阶段是保留在源码(编译期),在class字节码文件中不包含。

           @Retention(RetentionPolicy.CLASS) 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得

           @Retention(RetentionPolicy.RUNTIME) 注解会在class字节码文件中存在,在运行时可以通过反射获取到

 

@Target

表示注解作用(使用) 的范围,可以是类上使用,方法上使用,方法参数上使用 等。

比如: @Target(ElementType.TYPE) 作用接口、类、枚举、注解

            @Target(ElementType.FIELD) 作用属性字段、枚举的常量

            @Target(ElementType.METHOD) 作用方法

            @Target(ElementType.PARAMETER) 作用方法参数

            @Target(ElementType.CONSTRUCTOR) 作用构造函数

            @Target(ElementType.LOCAL_VARIABLE)作用局部变量

            @Target(ElementType.ANNOTATION_TYPE)作用于注解(@Retention注解中就使用该属性)

            @Target(ElementType.PACKAGE) 作用于包

            @Target(ElementType.TYPE_PARAMETER) 作用于类型泛型,即泛型方法、泛型类、泛型接口 (jdk1.8加入)

            @Target(ElementType.TYPE_USE) 类型使用.可以用于标注任意类型除了 class (jdk1.8加入)

一般比较常用的是ElementType.TYPE类型

 

@Documented

该注解是类似注释一样,可以将注解中的元素添加到Javadoc 文档中方便查看

 

@Inherited

作用跟类继承 类似的注解,父类如果有注解(注解里面包含@Inherited)则子类会继承 “父类实现了@Inherited的注解”

注意,如果是接口上的注解实现了@Inherited,子类将不继承

 

@Repeatable

java8之前,同一个注解不能重复使用在目标元素上(类)

@Repeatable(参数:容器)   在注解的括号里面需指定容器注解(一般容器用数组等,比如String[] )

@RepeatableAnnotation("值1")

@RepeatableAnnotation("值2")

这样被@Repeatable修饰的这个注解就可以在代码中重复使用

理解参考文章:https://www.jianshu.com/p/6db80f2c2b6f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值