Java基础之Java注解

Java注解

Java注解定义

  • 注解本身没有任何意义,单独的注解就是一种注释,他需要结合其他如反射,插桩等技术才有意义。
  • Java注解(Annotation)又称Java标注,是JDK1.5引入的一种注解机制。是元数据的一种形式,提供有关程序但不属于程序本身的数据。注解对他们注解的代码没有直接影响。

元注解

在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解)。声明的注解允许作用于哪些节点使用@Target声明;保留级别由@Retention 声明。

@Target声明 如下

  • ElementType.ANNOTATION_TYPE 可以应用于注解类型
  • ElementType.CONSTRUCTOR 可以应用于构造函数
  • ElementType.FIELD 可以应用于字段或属性
  • ElementType.LOCAL_VARIABLE 可以应用于局部变量
  • ElementType.METHOD 可以应用于方法级注解
  • ElementType.PACKAGE 可以应用于包声明
  • ElementType.PARAMETER 可以应用于方法的参数
  • ElementType.TYPE 可以应用于类的任何元素

@Retention其中保留级别 如下

  • RetentionPolicy.SOURCE
    • 标记的注解仅保留在源级别中,并被编译器忽略。
  • RetentionPolicy.CLASS
    • 标记的注解在编译时由编译器保留,但 Java 虚拟机(JVM)会忽略。
  • RetentionPolicy.RUNTIME
    • 标记的注解由 JVM 保留,因此运行时环境可以使用它。

注解应用场景

  • 源码级别-APT
    • 在编译期能够获取注解与注解声明的类包括类中所有成员信息,一般用于生成额外的辅助类。
  • 字节码级别-字节码增强技术
    • 在编译出Class后,通过修改Class数据以实现修改代码逻辑目的。对于是否需要修改的区分或者修改为不同逻辑的判断可以使用注解。
  • 运行时-反射
    • 在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同的逻辑判定。

注解使用

	@Target({ElementType.PARAMETER}) //表示作用在参数上
    @Retention(RetentionPolicy.SOURCE) //表示仅保留在源码
    public @interface ThemeAction{ }
    
    //使用这个注解可以标记在参数上 如果放在方法上编辑器就是提示报错
    public static void findAction(@ThemeAction String action) {}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值