Java中注解

Java中注解




1. 使用语法


采用@符合 和 interface 添加到注解名称前面,跟定义接口类似

简单定义一个 名称叫 NotAuth 的注解

public @interface NotAuth {
	// 内容 参数等
}

但是这个注解不完整,需要添加一些描述,称为 元注解



2. 元注解


描述注解的注解称为元注解


Java内置的元注解有四种:

  • @Target 目标,表示该注解运用到什么地方,作用到的目标类型(常用类型枚举:java.lang.annotation.ElementType )
  • @Retention 表示该注解在什么级别保存,被保留的时间(常用类型枚举:java.lang.annotation.RetentionPolicy )
  • @Documented 用于描述该注解是否可以生成到java-doc文档中
  • @Inherited 描述允许子类继承父类的这个注解,如一个父类使用了这个注解,子类是默认继承了这个注解的

常用的目标枚举 @Target


  • ElementType.TYPE 类上
  • ElementType.METHOD 方法上
  • ElementType.FIELD 属性上
  • ElementType.PARAMETER 参数上

保留时间级别 @Retention


  • RetentionPolicy.RUNTIME 运行时阶段,整个VM运行时都会保留,因此可使用反射机制读取注解信息
  • RetentionPolicy.SOURCE 源码阶段,在Java文件中存在,编译成CLASS文件时就被抛弃
  • RetentionPolicy.CLASS 字节码阶段,编译成CLASS文件时存在,在VM运行时被抛弃

3. 完整注解


// 运行时
@Retention(RetentionPolicy.RUNTIME)
// 方法 和 类上 都可以添加这个注释
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface NotAuth {

}



4. 反射API


Class、Method、Field等上面都可以使用API操作注解


java.lang.Class

java.lang.reflect.Method

java.lang.reflect.Field


具体操作的API


// 获取注解
public <A extends Annotation> A getAnnotation(Class<A> annotationClass);

// 判断是否有注解
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);

// 获取所有注解
Annotation[] getAnnotations();



欢迎关注,谢谢!


刚开始写微信公众号,请多多关注,欢迎,多谢!

微信公众号:《Java学习积累》
请关注一下,多谢!!!
微信公众号:Java学习积累

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天涯共明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值