java 元注解

什么是元注解?

元注解就是用来解释其他的注解,对自定义注解进行注解。

6个元注解

java8定义了6个标准元注解:@Target,@Retention,@Documented,@Inherited,@Repeatable和@Native。

@Target

描述注解的使用范围(即被修饰的注解可以用在什么地方,类定义上,方法,参数等),@Target注解用来说明那些被他注解的注解类可修饰的对象范围。

定义只能写在方法或者参数上的注解:

@Target({ ElementType.METHOD, ElementType.PARAMETER })// 只能写在方法或者参数上
  public @interface Anno {
}
@Retention

描述注解保留的时间范围(即被描述的注解在它所修饰的类中可以被保留到何时),@Retention注解用来限定那些被他所注解的注解类在注解到其他类上以后,可以保留多长时间,@Rentention 包含一个 RetentionPolicy 类型的成员变量, 使用 @Rentention 时必须为该 value 成员变量指定值(值有三种)。

Retention.SOURCE注解只在源文件中保留,在编译期间删除
Retention.CLASS默认是该值,注解只在编译期间存在于.class文件中,运行时JVM不可获取注解信息
Retention.RUNTIME运行时JVM可以获取注解信息(反射),是最长注解持续期
@Retention(RetentionPolicy.SOURCE)   //只在源码中
 @Retention(RetentionPolicy.RUNTIME)  //使用该注解保留到运行前

  public @interface Anno {

}
@Documented

描述在使用javadoc工具为类生成帮助文档时是否要保留其注解信息,定义注解类时使用@Documented注解进行修饰,则所有使用该注解修饰的程序元素的API文档中将会包含该注解说明。

@Documented
public @interface Anno{
   public String doc();
}
@Inherited

使被他修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解。),用于指示子类是否可以继承父类中的注解。

@Retention(RetentionPolicy.RUNTIME)    
public @interface Anno {

}
@Repeatable

用于声明标记的注解为可重复类型注解,可以在同一个地方多次使用。

public @interface Roles {
    Role[] value();
}

@Repeatable(Roles.class)
public @interface Role {
    String roleName();
}

@Repeatable中的参数为被修饰注解的容器的类对象(class对象)

@Native

@Native注解修饰成员变量,则表示这个变量可以被本地代码引用,常常被代码生成工具使用。但是此注解不常使用,了解即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值