加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Java注 解annotation的用途分析

发布时间:2022-12-09 11:08:04 所属栏目:编程 来源:
导读:  今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。

  注解是什么

  实现格式

  从代码来看我们知道注解的实现格式是:
  今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。
 
  注解是什么
 
  实现格式
 
  从代码来看我们知道注解的实现格式是:
 
  public @interface MyAnnotation{
 
      属性列表;
 
  }
 
  所以我们有了第一直觉,注解可能是一个接口。通过查询资料得知(可以通过反编译软件),实际上 @interface 是自定义接口对 annotation 接口的继承,@interface 实际是一个语法糖。
 
  import java.lang.annotation.Annotation;
 
  public interface MyAnnotation extends Annotation{
 
      属性列表;
 
  }
 
  使用位置
 
  类、方法、成员变量、形参位置。
 
  分类
 
  不同角度,我们对注解能有不同的分类,但知道了注解的实现原理后就会明白,实际上用法和实现方法都是一回事。
 
  来源
 
  1. JDK注解:一般都是在编译时起用作的注解,比如我们最为熟悉的 @Override。
 
  2. 第三方框架注解
 
  3. 自定义注解
 
  运行机制(保留策略)
 
  @Retention({保留策略})
 
      public @interface MyAnnotation{
 
          属性列表;
 
      }
 
  1.源码(SOURCE)注解:注解只在源码中存在,编译成.class文件就不存在了,也就是说只能起到 “看” 的作用。
 
  2.编译(CLASS)注解:注解在源码和.class文件中都存在(JDK自带注解都属于编译时注解),一般用来作语法校验。
 
  3.运行(RUNTIME)注解:在运行阶段还起作用,甚至会影响运行逻辑的注解(@Autowired属于运行时注解),第三方框架和自定注解一般采用 runtime 的保留策略,能实现依赖注入、切面编程等功能。
 
  元注解
 
  实际在上面,我们已经看到一个元注解了(@Retention)。元注解就是加在注解上描述注解的注解。 一共有5个。
 
  1. @Documented
 
  在生成javadoc的时候就会把@Documented注解给显示出来。
 
  2. @Target(关键)
 
  限定作用位置,Method、Class等等。
 
  9. @Inherited
 
  被 @Inherited 注解的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解。
 
  10. @Retention(关键)
 
  上文的保留策略注解,影响注解作用。
 
  6. @Repeatable (不重要)
 
  @Repeatable 注解是用于声明其它类型注解的元注解,来表示这个声明的注解是可重复的。@Repeatable的值是另一个注解,其可以通过这个另一个注解的值来包含这个可重复的注解。
 

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!