Java学习笔记(五):Java元注解介绍

前言

       注解(Annotation)是Java5开始引入的新特征。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。

元注解

       元注解的作用就是负责注解其他注解。它们被用来提供对其它 annotation 注解类型的说明操作。

Java5.0定义的元注解有以下4种:

  1. @Retention
  2. @Target
  3. @Document
  4. @Inherited

1.@Retention 注解

         用于描述注解的生命周期,表示需要在什么级别保存该注解,即保留的时间长短。取值类型(RetentionPolicy)有以下几种:

  1. @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
  2. @Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
  3. @Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到相应的属性值

示例:

@Retention(RetentionPolicy.RUNTIME)
@interface MyTests {
    MyTest[] value();
}

       上述示例使用 RetentionPolicy.RUNTIME,这样注解处理器可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理。使用参考:JDK 8 可重复注解

2.@Target注解

       @Target 注解定义了注解的作用目标,用于描述注解的使用范围,即注解在哪儿用。

  1. @Target(ElementType.TYPE) //接口、类、枚举
  2. @Target(ElementType.FIELD) //字段、枚举的常量
  3. @Target(ElementType.METHOD) //方法
  4. @Target(ElementType.PARAMETER) //方法参数
  5. @Target(ElementType.CONSTRUCTOR) //构造函数
  6. @Target(ElementType.LOCAL_VARIABLE)//局部变量
  7. @Target(ElementType.ANNOTATION_TYPE)/注解
  8. @Target(ElementType.PACKAGE) //包
  9. @Target(ElementType.TYPE_PARAMETER) //泛型(JDK 8 引入)
  10. @Target(ElementType.TYPE_USE) //使用在所有的变量类型上(JDK 8 引入)

示例:

@Target(ElementType.TYPE_PARAMETER)
@interface TypeParam{

}

       上述示例使用ElementType.TYPE_PARAMETER表示 TypeParam注解可以用在泛型上面。使用参考:JDK 8 类型注解

3.@Document注解

       @Document 注解,说明该注解将被包含在javadoc中。它是一个标记注解,没有成员。

4.@Inherited 注解

       @Inherited 注解,用于表示某个被标注的类型是被继承的。如果父类被 @Inherited 注解修饰,说明子类可以继承父类中的该注解。


博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛麻袋的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值