Java注解总结

本文介绍了从Java脚本开发转向Spring开发时,对Spring中注解的初步理解,包括注解的本质、架构(Retention和ElementType),以及注解如何通过反射机制实现代码复用和字节码嵌入。
摘要由CSDN通过智能技术生成

刚从Java的脚本开发进入Spring开发,对于Spring中大量使用的注解之前认识较少,实在忍受不了后决定花一些时间对这方面的知识做一个总结。不对的地方请批评指正。

1、什么是注解(Annotation)

注解的本质是继承了Java Annotation接口和一系列元注解接口的子接口。其中Annotation接口是核心的接口,Java的元注解有六种,分别是:

@Retention: 描述注解的保存方式,有三种形式:保存在代码中,保存在class文件中,运行时保存并通过反射访问。自变量为RetentionPolicy

@Target: 描述注解面向哪一些Java对象,自变量为ElementType

@Documented: 标注这个注解是否包含在JavaDoc中

@Inherited: 标注这个注解继承于哪个注解类

@Repeatable: 标注这个注解可以重复标记

@Native: 仅能标注Field(变量),表示这个变量可以被本地代码引用

以上接口都定义在Java.lang.annotation包中:

2、注解的架构

一个注解由一个RetentionPolicy和N个ElementType定义,这两个类都属于枚举类,分别由上面提到的@Retention和@Target元注解来引入。

RetentionPolicy枚举类有CLASS、RUNTIME、SOURCE三个枚举常量,具体定义如下:

  • CLASS:注释将被编译器在.class文件中引入,但是在VM虚拟机中运行时不需要保留;
  • RUNTIME:注释将被编译器在.class文件中引入,也会在VM虚拟机中运行;
  • SOURCE:注释只在源码中被保留,会被编译器忽略,要注意的是注解在编译器处理阶段还是存在的。

ElementType枚举类有12个枚举常量,定义如下:

注解的用处

注解可以通过反射机制获取注解内容后,将某些特性嵌入被注解对象的代码甚至字节码中(嵌入到什么层级由Retention元注解定义),可以方便编码者将一些公共特性抽象出来以后复用给相关对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值