注解
基本格式
java
public @interface AnnotationDemo01 {
}
元注解
@Target
声明注解的作用域
也就是写该注解是写在类上还是,方法上,等
作用域有
其中,ElementType 是一个枚举类, 用来枚举 不同的类型,也可以不使用枚举
ElementType.METHOD 方法
ElementType.CONSTRUCTOR 构造方法
ElementType.TYPE 类型
ElementType.FIELD 属性
还有其他的的,
@Retention
用来约束注解的生命周期
有3种类型
SOURCE :注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)
CLASS :注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override、@Deprecated、@SuppressWarnning等
RUNTIME :注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),如SpringMvc中的@Controller、@Autowired、@RequestMapping等