java中元注解有四个:@Retention ( 保留)@Target @Document @Inherited
@Retention 指定注解的保留位置
@Retention(RetentionPolicy.Source) 注解仅仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)注解的默认保留策略,注解会在class字节码文件中存在,但是运行时无法获取.运行时无法获取,那么就无法使用反射机制
@Retention(RetentionPolicy.RUNTIME)注解会在clas文件中存在,在运行时可以通过反射获取得到
@Target:注解的作用目标,也就说这个注解用在哪里
@Target(ElementType.TYPE) 接口、类、枚举、注解
@Target(ElementType.FIELD) 字段,枚举的常量
@Target(ElemnetType.METHOD)方法
@Target(ElementType.PARAMETER)方法参数
@Target(ElementType.CONSTRUCTOR)构造函数
@Target(ElementType.LOCAL_VARIABLE)局部变量
@Target(ElementType.ANNOTATION_TYPE)注解
@Target(ElementType.PACKAGE)包,
比如:
@Target(ElementType.TYPE)
public @interface Controller {
}
这个注解就指定了,controller注解用于标注类。
@Document:说明该注解将被包含在javaDoczhong
@Inherited说明子类可以继承父类的注解
@Target({ElementType.METHOD})
public @interface AnnatDemo{
public int value();
}
public String say(String person);