学习笔记:JAVA元注解@interface(@Target,@Documented,@Retention,@Inherited)

学习笔记:JAVA元注解


jdk1.5起开始提供了4个元注解,用来定义自定义注解的注解,它们分别是:

@Target:指定注解使用的目标范围(类、方法、字段等),当注解类型声明中没有 @Target元注解,则默认为可适用所有的程序元素。如果存在指定的 @Target元注解,则编译器强制实施相应的使用限制。关于程序元素(ElementType)是枚举类型,共定义8种程序元素,如下:

ElementType 含义
ANNOTATION_TYPE: 注解类型声明
CONSTRUCTOR: 构造方法声明
FIELD: 字段声明(包括枚举常量)
LOCAL_VARIABLE: 局部变量声明
METHOD: 方法声明
PACKAGE: 包声明
PARAMETER: 参数声明
TYPE: 类、接口(包括注解类型)或枚举声明

例如,上面源码@Target的定义中有一行 @Target(ElementType.ANNOTATION_TYPE),意思是指当前注解的元素类型是注解类型。

@Documented指定被标注的注解会包含在javadoc中。

@Retention指定注解的生命周期(源码、class文件、运行时),当注解类型声明中没有@Retention元注解,则默认保留策略为RetentionPolicy.CLASS。关于保留策略(RetentionPolicy)是枚举类型,共定义3种保留策略,如下:

RetentionPolicy 含义
SOURCE: 仅存在Java源文件,经过编译器后便丢弃相应的注解
CLASS: 存在Java源文件,以及经编译器后生成的Class字节码文件,但在运行时VM不再保留注释
RUNTIME: 存在源文件、编译生成的Class字节码文件,以及保留在运行时VM中,可通过反射性地读取注解

@Inherited: 指定子类可以继承父类的注解,只能是类上的注解,方法和字段的注解不能继承。

即如果父类上的注解是 @Inherited修饰的就能被子类继承。

jdk1.8又提供了以下两个元注解

@Native指定字段是一个常量,其值引用native code。

@Repeatable注解上可以使用重复注解,即可以在一个地方可以重复使用同一个注解,像spring中的包扫描注解就使用了这个。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值