Java 注解 【Annotation】

本文介绍了Java注解(Annotation)的基本概念,包括其定义、应用、分类和元注解,重点讨论了@Retention和@Target的作用。Java注解提供了一种安全的元数据机制,用于与程序元素关联信息,通过反射机制实现校验、配置等功能。
摘要由CSDN通过智能技术生成

Java 注解 【Annotation】

1. Java 注解定义

注解(Annontation),Java5 引入的新特性,位于 java.lang.annotation 包中。
提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。
是一种说明、配置、描述性的信息,与具体业务无关,也不会影响正常的业务逻辑。但我们可以用反射机制来进行校验、赋值等操作。

2. Java 注解应用
  1. 帮助程序员生成文档注释
  2. 在代码编译阶段进行格式检查,如 @Override 放在方法前,如果方法声明发生改变便会发生编译错误。
    【方法声明包括】方法名,返回值,参数列表
  3. 可以实现替代配置文件的功能
  4. 可以利用反射解析和使用注解
3. Java 注解分类
1. 标准注解
	如:@Override, @SuppressWarnings, @Deprecated等, 这些注解会是编译器开启严格格式检查
2. 元注解
	元注解是在定义注解时使用的,元注解用来修饰注解
	如:@Retention, @Target, @Documented, @Inherited
3. 自定义注解
	程序员根据自己的需求个人定义的注解
4. 元注解
4.1 @Retention 【重点】
@Retention 用于明确该自定义注解用于那个阶段或者级别分为三种情况:
	只存在于源代码中(SOURCE), 存在于类文件中(CLASS),进入运行状态(RUNTIME)
@Retention 的参数是一个枚举类型的 RententionPolicy
	RententionPolicy.SOURCE
		编译时被丢弃,不包含在 .class 类文件中
	RententionPolicy.CLASS
		JVM 虚拟机加载时被丢弃,包含在类文件中,默认值
	RententionPolicy.RUNTIME
		JVM 进行加载,包含在类文件中,也存在于运行状态
		【重点】在这个阶段想要使用注解中的数据,需要通过反射获取

RetentionPolicy 源码

public enum RetentionPolicy {
   
    /**
     * Annotations are to be discarded by the compiler.
     */
    
    // 翻译:注释将被编译器丢弃。
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    
    // 翻译:注解由编译器记录在类文件中,但在运行时不需要由虚拟机保留。这是默认行为。
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    
    // 翻译:注解由编译器记录在类文件中,并在运行时由虚拟机保留,因此可以通过反射读取它们。
    RUNTIME
}
4.2 @Documented

此注解主要用于生成文档信息,对类作辅助说明

4.3 @Target 【重点】

@Target 主要用于描述注解的使用范围(是类,方法,还是成员变量上,等等诸如此类)

ElementType 作为 @Target 的参数,是一个枚举类型,他就是来给定注解的使用范围的。

参数 范围
ElementType.TYPE 表示该注解可以用于类,接口,枚举
ElementType.FIELD 表示该注解可以用于成员变量
ElementType.CONSTRUCTOR 表示该注解可以用于构造方法
ElementType.METHOD 表示该注解可以用于成员方法
ElementType.PARAMETER 表示该注解可以用于成员方法参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值