zoukankan      html  css  js  c++  java
  • Java之四大元注解@Target、@Retention、@Documented、@Inherited

    什么叫做元注解??   ==》用于注解【注释】的注解就叫做元注解

    注解叫做:元数据,标签,注释           元注解[数据]--->注解--->标记代码

    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 郑清

    ——————————————————————————————————————————————

    @Documented 注解表明这个注解应该被 javadoc工具记录. 默认情况下,javadoc是不包括注解的. 但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。

    源码

    使用方法

    复制代码
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Column {
        public String name() default "fieldName";
        public String setFuncName() default "setField";
        public String getFuncName() default "getField"; 
        public boolean defaultDBValue() default false;
    }
    复制代码

    —————————

  • 相关阅读:
    Visio使用遇到的问题
    UML类图符号 各种关系说明以及举例
    测试人员与开发人员之间的关系如何?
    linux命令学习-复制(cp,scp)
    linux服务器报Too many open files的解决方法
    QTP学习一添加默认的注释及调用外部vbs文件
    关于JAVA应用中文字体显示小方框的问题解决
    web测试方法总结
    linux命令学习-su
    Oracle定义varchar2()类型存储汉字的长度问题
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/11550394.html
Copyright © 2011-2022 走看看