java注解-java原生注解

384 阅读3分钟

java注解相信小伙伴们都有使用过,我们一起从头整理一下java注解的使用和定义方法以及他们都能做什么(帖子有点长 相信看完你会对注解有新的理解)

第一章.java原生注解

目前为止JDK自带的原生注解有6个:
这些注解都是用来给自定义注解加buff的哈 自己写注解才是最终目的\

@Retention :表示注解保留周期,用于提示注解被保留多长时间
@Target :表示注解可以使用在什么地方
@Inherited :表示该注解是否可被继承
@Documented :注解写入文档 表示注解是否能被 javadoc 处理并保留在文档中
@Repeatable :表示注解的属性可以重复!同一种注解多次使用
@Native

1.@Retention 注解的保留周期

(配置你的注解能活到啥时候)
参数是RetentionPolicy枚举类型

微信图片_20220421181445.png

  • RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
  • RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
  • RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在; 这3个生命周期分别对应于:Java源文件(.java文件) —> .class文件 —> 内存中的字节码。

2.@Target 注解可声明位置

(配置你的注解可以在那里用)
参数是ElementType枚举类型

image.png

  • ElementType.TYPE : 表示该注解可以被使用在 【类, 接口,注解,enum】上面
  • ElementType.FIELD : 表示该注解可以被使用在 【属性】上面
  • ElementType.METHOD : 表示该注解可以被使用在 【方法】上面
  • ElementType.PARAMETER : 表示该注解可以被使用在 【参数】上面
  • ElementType.CONSTRUCTOR : 表示该注解可以被使用在 【构造函数】上面
  • E lementType.LOCAL_VARIABLE* : 表示该注解可以被使用在 【局部变量】上面
  • ElementType.ANNOTATION_TYPE : 表示该注解可以被使用在 【 注解类型】上面
  • ElementType.PACKAGE : 表示该注解可以被使用在 【包】上面
  • ElementType.TYPE_PARAMETER : 表示该注解可以被使用在 【输入参数】上面
  • ElementType.TYPE_USE : 表示该注解可以使用在任意位置

3.@Inherited 注解是否可被继承

(配置用你注解人的儿子能不能用你的注解)
当你的自定义注解加上这个@Inherited时,就代表用标注了自定义注解的类的子类也继承了自定义注解(有点绕口,稍等我们会进行练习哈)

4.@Documented 注解写入文档 表示注解是否能被 javadoc 处理并保留在文档

这个注解没有深入研究 看源码注释大概可以知道是给javadoc文档化用的,了解的小伙伴可以在帖子下面留言补充哈~(跪谢.jpg)

5.@Repeatable 表示注解的属性可以重复!同一种注解多次使用

(配置能不能多次使用你的注解)
这里超纲一点声明一个自定义注解看看效果哈~是不是很神奇

3.png

6.@Native 关于这个的文献有点少 我还没搞明白 欢迎大佬补充哈

(阿巴阿巴~)