自定义注解 public @interface xxx

自定义注解  public @interface xxx

版权声明:本文为博主原创文章,未经博主允许不得转载,转载请声明博客处出。 


今天在看项目时,看到一种新的注解方式,记录下来。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
}

在着当中的@interface 不是interface,是注解类

这是在jdk1.5之后加入的,java没有给它新的关键字,所以就用@interface 表示了 
这个注解类,就是定义一个可用的注解,包括这个注解用于什么地方,是类,还是方法,还是property,还是方法入参等等

而其中的:
@Target:注解的作用目标

@Target(ElementType.TYPE)   //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR)  //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包  

@Retention(RetentionPolicy.RUNTIME):注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Retention(RetentionPolicy.SOURCE)中的SOURCE:在源文件中有效(即源文件保留)
@Retention(RetentionPolicy.CLASS)中的CLASS:在class文件中有效(即class保留,默认策略)

@Retention(RetentionPolicy.RUNTIME)中的RUNTIME:在运行时有效(即运行时保留,可以通过此级别获取注解信息)

自定义注解的简单实例:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ABC{

    Class<?> clazz();

}

定义之后的使用:

 @ABC(clazz = xxx.class)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值