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

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 (成员方法类)都提供的可以反射注解的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值