java 元数据 注解_Java注解(Annotation)讲解

c3e06c57ba467100e0019525bf9293d0.png

注解简介

Java注解是一种特殊的元数据,元数据是关于数据的数据,所以,注解就是代码的元数据。

注解是Java 1.5引入的,目前已被广泛应用于各种框架如:lombok、JDK注解、mybatis、Spring、Hibernate等。注解相当于是一种嵌入在程序中的元数据,可以使用注解解析工具或编译器对,其进行解析,也可以指定注解在编译期或运行期有效。 在注解诞生之前,程序的元数据存在的形式仅限于java注释或javadoc,但注解可以提供更多功能,它不仅包含元数据,还能作用于运行期,注解解析器能够使用注解决定处理流程。 Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和任何元数据(metadata)的途径和方法。Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象, 然后通过Annotation对象来获取注解里面的元数据。

工作原理

注解工作原理这边以提供者和消费者来解释一下,不管什么注解都是为了描述源代码或者规定源代码在被处理时进一步加工。所以编码时写注解就是提供者角色,代码运行3个阶段就是注解消费者。

1、注解提供者:源代码注解。2、注解消费者:在三个时期都会处理,源代码进行分析处理时、编译源代码进行处理时、运行时进行处理时。注解的生命周期

一个注解可以有三个生命周期,它默认的生命周期是保留在一个CLASS文件,但它也可以由一个@Retetion的元注解指定它的生命周期。

1、java源文件:当在一个注解类前定义了一个@Retetion(RetentionPolicy.SOURCE)的注解,那么说明该注解只保留在一个源文件当中,当编译器将源文件编译成class文件时,它不会将源文件中定义的注解保留在class文件中。2、class文件中:当在一个注解类前定义了一个@Retetion(RetentionPolicy.CLASS)的注解,那么说明该注解只保留在一个class文件当中,当加载class文件到内存时,虚拟机会将注解去掉,从而在程序中不能访问。3、程序运行期间:当在一个注解类前定义了一个@Retetion(RetentionPolicy.RUNTIME)的注解,那么说明该注解在程序运行期间都会存在内存当中。此时,我们可以通过反射来获得定义在某个类上的所有注解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值