注解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的子类。