当前位置: 代码迷 >> 综合 >> JavaEE进阶(13) 四大元注解@Target、@Retention、@Documented、@Inherited
  详细解决方案

JavaEE进阶(13) 四大元注解@Target、@Retention、@Documented、@Inherited

热度:24   发布时间:2023-12-13 14:59:28.0

什么叫做元注解??   ==》用于注解【注释】的注解就叫做元注解
注解叫做:元数据,标签,注释           元注解[数据]--->注解--->标记代码

1.@Target用于描述注解的使用范围,也就是说使用了@Target去定义一个注解,那么可以决定定义好的注解能用在什么地方
2.@Retention用于描述注解的生命周期,也就是说这个注解在什么范围内有效,注解的生命周期和三个阶段有关:源代码阶段CLASS文件中有效运行时有效,故其取值也就三个值,分别代表着三个阶段
3.@Documented表示该注解是否可以生成到 API文档中。在该注解使用后,如果导出API文档,会将该注解相关的信息可以被例如javadoc此类的工具文档化。 注意:Documented是一个标记注解,没有成员。
4.@Inherited使用@Inherited定义的注解具备继承性
假设一个注解在定义时,使用了@Inherited,然后该注解在一个类上使用,如果这个类有子类,那么通过反射我们可以从类的子类上获取到同样的注解、

/*** Java四大元注解:* 1.@Target :用于描述注解的使用范围,也就是说使用了@Target去定义一个注解,那么可以决定定义好的注解能用在什么地方*    内部值:ElementType[]  value()数组, value值类型   ElementType枚举类型*    元注解中的枚举值决定了,一个注解可以标记的范围*      TYPE : 类型上面  用于描述类、接口(包括注解类型) 或enum声明*      FIELD : 用于描述字段*      METHOD :方法*      PARAMETER : 参数 【参数名】*      CONSTRUCTOR : 构造方法*      LOCAL_VARIABLE : 局部变量*      ANNOTATION_TYPE : 可以打在注解上面*      PACKAGE :可以打在包上面*      TYPE_PARAMETER : 参数类型【形式参数类型】*      TYPE_USE : 任何位置都可以* 2.@Retention:用于描述一个注解存在的生命周期【源码,字节码文件,运行时】* 	    内部值:RetentionPolicy value();非数组,意味着只能一个值:* 	    值类型:枚举值RetentionPolicy:几个值决定了几个状态:如下几个值* 		SOURCE :表示一个注解可以存在于源码中==>java的源码中*      CLASS :表示 一个注解可以在源码中,并且可以在字节码文件中*      RUNTIME :表示 一个注解可以在源码、字节码、及运行时期该注解都会存在* 3.@Document :表示该注解是否可以生成到 API文档中 ==》即生成API文档的时 检验* 4.@Inherited :表示一个【注解】能够被继承* 	    不是说注解与注解之间能否相互继承*    而是说:一个类A被注解了,那么另外一个类B,继承了A类* 	  B类能够继承到A类中,的注解 (即被@Inherited注解过的注解)* @author 郑清*/

 

  相关解决方案