java 中的 Annotation 注解学习笔记

什么是注解

  • Annotation 是从JDK5.0 开始引入的新技术
  • 作用1: 可以被程序读取,列如@Value 通过反射使用该注解读取配置文件信息
  • 作用2: 本身不是程序,和注释差不多. 如: @Override, @Deprecated 内置注解
  • Annotation 格式以 @注解命名成 在代码中存在,还可以添加一些参数,如: @RequestMapping(value = “/add”, method = RequestMethod.POST)
  • Annotation 可以附加在 package, class, method,field 等上面,相当于给他们添加了额外的辅助信息,可以通过反射对这些元数据的访问

元注解

  • 元注解的作用就是负责解释注解其他注解,java中定义了4个标准的meta-annotation 类型,他们被用来提供对其他annotation类型说明

  • 这些类型的注解和他们所支持的类型都在java.lang.annotation 包中可以找到

  • @Target

  • 用于描述注解的使用范围 (被描述的注解可以用在什么地方)

  • @Target(ElementType.TYPE) 接口、类、枚举、注解

  • @Target(ElementType.FIELD) 字段、枚举的常量

  • @Target(ElementType.METHOD)方法

  • @Target(ElementType.PARAMETER)方法参数

  • @Target(ElementType.CONSTRUCTOR)构造函数

  • @Target(ElementType.LOCAL_VARIABLE)局部变量

  • @Target(ElementType.ANNOTATION_TYPE)注解

  • @Target(ElementType.PACKAGE)包

  • @Retention

  • 表示需要在什么级别保存注解信息,用于描述注解的声明周期

  • RetentionPolicy.SOURCE:这种类型的Annotation只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含

  • RetentionPolicy.CLASS:这种类型的Annotation编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得

  • RetentionPolicy.RUNTIME:这种类型的Annotation将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用

  • @Document

  • 说明该注解将被包含在javadoc中

  • @Inherited

  • 说明子类可以继承父类中的注解

自定义注解

  • 使用 @interface 自定义注解时候, 自动继承了 java.lang.annotation,Annotation 接口
  • @interface 声明一个注解的格式: public @interface 注解名称 {定义内容}
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值