美文网首页Android旅途
注解Annotation(一)—— 初识注解

注解Annotation(一)—— 初识注解

作者: 朝阳小麦 | 来源:发表于2018-10-16 11:22 被阅读6次

    适用人群:Java开发或者Android开发,需要了解注解Annotation的使用。
    本文内容:通过一个简单的例子,带大家认识什么是注解。

    目录:
    一、注解的概念和分类
    二、元注解(注解的注解)
    三、注解的自定义
    四、自定义注解的使用
    五、自定义注解的解析

    一、注解的概念和分类

    Annotation(注解)是JDK5.0及以后版本引入的。Annotation就像代码的标签一样,应用于类、方法、变量等。
    注解可分为:JDK自带注解、框架注解、自定义注解。JDK自带注解比如@Override、@suppressWarning等。
    按照生命周期:注解又分为源代码注解、编译注解、运行时注解。

    二、元注解(注解的注解)

    自定义注解会用到元注解,来指定该自定义注解的使用范围、使用位置。
    java 5.0定义了4个meta-annotation类型:
    1.@Target
    使用示例:

    @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
    

    修饰的对象范围,由类ElementType定义:

    public enum ElementType {
        /** Class, interface (including annotation type), or enum declaration */
        TYPE,//用于描述类、接口(包括注解类型) 或enum声明
    
        /** Field declaration (includes enum constants) */
        FIELD,//用于描述域
    
        /** Method declaration */
        METHOD,//用于描述方法
    
        /** Formal parameter declaration */
        PARAMETER,//用于描述参数
    
        /** Constructor declaration */
        CONSTRUCTOR,//用于描述构造器
    
        /** Local variable declaration */
        LOCAL_VARIABLE,//用于描述局部变量
    
        /** Annotation type declaration */
        ANNOTATION_TYPE,//用于描述注解类型
    
        /** Package declaration */
        PACKAGE,//用于描述包
    
        /**
         * Type parameter declaration
         *
         * @since 1.8
         */
        TYPE_PARAMETER,
    
        /**
         * Use of a type
         *
         * @since 1.8
         */
        TYPE_USE
    }
    

    2.@Retention
    使用示例:

    @Retention(RetentionPolicy.SOURCE)
    

    用于描述注解的生命周期(即:被描述的注解在什么范围内有效)。分为源代码注解、编译时注解、运行时注解,由RetentionPolicy类定义:

    public enum RetentionPolicy {
        /**
         * Annotations are to be discarded by the compiler.
         */
        SOURCE,///源代码注解
    
        /**
         * Annotations are to be recorded in the class file by the compiler
         * but need not be retained by the VM at run time.  This is the default
         * behavior.
         */
        CLASS,///编译时注解
    
        /**
         * Annotations are to be recorded in the class file by the compiler and
         * retained by the VM at run time, so they may be read reflectively.
         *
         * @see java.lang.reflect.AnnotatedElement
         */
        RUNTIME///运行时注解
    }
    

    3.@Document
    使用示例:

    @Document
    

    这是一个标记注解(一个没有成员的Annotation类型被称为标记注解,这种类型仅仅使用自身的存在与否来为我们提供信息,比如常见的@Override)。@Document注解表示可以自动生成javadoc文档。

    4.@Inhrited
    使用示例:

    @Inhrited
    

    这是一个标记注解,表示某个被标注的类型是被继承的。比如:如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个Annotation将被用于该class的子类。

    三、注解的自定义
    四、自定义注解的使用
    五、自定义注解的解析

    相关文章

      网友评论

        本文标题:注解Annotation(一)—— 初识注解

        本文链接:https://www.haomeiwen.com/subject/dxoczftx.html