Java的自定义注解——Annotation的使用

本文介绍了Java中自定义注解的使用,包括如何定义Annotation类型,添加成员及默认值,以及如何通过反射访问注解信息。讲解了元注解@Target和@Retention的作用,@Target用于指定注解适用的程序元素,@Retention控制注解的保留策略。还提供了一个实例,展示了如何在实际代码中应用自定义注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Annotation——自定义注解

Java中提供了 Annotation 功能,该功能可用于类,构造方法,成员变量,方法。参数等的声明中。该功能不会影响程序的运行,但是会对编译器警告等辅助工具产生影响。

定义 Annotation 类型

在定义 Annotation 类型时,需要用到用来定义接口的 interface 关键字,但需要在 interface 关键字前面加一个 “ @ ” 符号,即定义 Annotation 类型的关键字为@interface 。

public @interface MyAnnotation {
   

}

这样就是定义了一个 Annotation 类型。上面定义的 Annotation 类型未包含任何成员,为 Annotation 类型添加成员。

public @interface MyAnnotation {
   
	String name();
	Class type();
}

在为 Annotation 类型定义成员时,也可以为成员设置默认值。

public @interface MyAnnotation {
   
	String name() default "默认值";
	Class type() default void.class;
}
访问 Annotation 信息

可以通过反射注解,来访问 Annotation 信息,想要反射注解还需要了解一下元注解。元注解就是为其他注解做注解,也就是注解的注解。元注解有四个,常用的有两个 @Target 和 @Retention 。
在这里插入图片描述

@Target

在定义 Annotation 时,可以通过 @Target 来设置 Annotation 适用的程序元素种类,如果为设置 @Target ,则表示适用于所有程序元素。枚举类 ElementType 中的枚举常量用来设置 @Target。
枚举类 ElementType 中的枚举常量

枚举常量 说明
ANNOTATION_TYPE 表示用于 Annotation 类型
TYPE 表示用于类,接口和枚举,以及Annotation 类型
CONSTRUCTOR 表示用于构造方法
FIELD 表示用于成员变量和枚举变量
METHOD 表示用于方法
PARAMETER 表示用于参数
LOCAL_VARIABLE 表示用于局部变量
PACKAGE 表示用于包
@Retention

通过设置 Annotation 类型的 @Retention ,可设置 Annotation 的有效范围。枚举类 RetentionPolicy 中的枚举常量用来设置 @Retention ,如果未设置 @Retention ,Annotation 的有效范围为枚举常量 CLASS 表示的范围。
枚举类 RetentionPolicy 中的枚举常量

枚举常量 说明
SOURCE 表示不编译 Annotation 到类文件中,有效范围最小
CLASS 表示编译 Annotation 到类文件中,但是在运行时不加载 Annotation 到JVM中
RUNTIME 表示在运行时加载 Annotation 到JVM中,有效范围最大

之前反射的三个类 Constructors (构造方法类),Field (成员属性类),Methods (成员方法类)都提供的可以反射注解的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值