文章目录
lang下annotation包结构如下:
元注解
@Documented 是否生成javadoc
该注解没有参数,无需赘述
@Retention 生效时机
源码定义如下:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
范围由RetentionPolicy 这个枚举类定义,
public enum RetentionPolicy {
//生效在源码阶段
SOURCE,
//生效在class文件
CLASS,
//生效程序运行期间
RUNTIME
}
@Target 生效范围
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
//生效范围可以是一个数组
ElementType[] value();
}
ElementType定义如下:
public enum ElementType {
//生效在类、注解、接口和枚举
TYPE,
//成员变量、枚举常量
FIELD,
//方法
METHOD,
//变量
PARAMETER,
//构造方法
CONSTRUCTOR,
//本地变量
LOCAL_VARIABLE,
//注解类型
ANNOTATION_TYPE,
//包
PACKAGE,
//变量类型 java8新加
TYPE_PARAMETER,
//使用类型
TYPE_USE
@Inherited 是否可继承
@Repeatable 表明标记的注解可以多次应用于相同的声明或类型,此注解由Java SE 8版本引入
Java自带的标准注解
包括@Override
、@Deprecated
和@SuppressWarnings
,分别用于标明重写某个方法、标明某个类或方法过时、标明要忽略的警告,用这些注解标明后编译器就会进行检查。
自定义注解
使用元注解自定义注解