Android旅途

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

2018-10-16  本文已影响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的子类。

三、注解的自定义
四、自定义注解的使用
五、自定义注解的解析
上一篇下一篇

猜你喜欢

热点阅读