元数据:
@target 表示该注解可以用于什么地方。可能的 ElementType 参数包括:
CONSTRUCTOR :构造器的声明
FIELD :域声明(包括 enum 实例)
LOCAL_VARIABLE :局部变量声明
METHOD :方法声明
PACKAGE :包声明
PARAMETER :参数声明
TYPE :类、接口(包括注解类型)或 enum 声明
@Retention 表示需要在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:
SOURCE :注解将被编译器丢失
CLASS :注解在 class 文件中可用,但会被 VM 丢弃
RUNTIME : VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息
@Docmented 将此注解包含在 Javadoc 中
@Inherited 允许子类继承父类中的注解
注解元素:
注解元素的类型——所有基本类型、 String 、 Class 、 enum 、 Annotation 、以上类型的数组
编译器对默认值的限制:
1 元素不能有不确定的值
2 对于非基本类型的元素,无论是在源代码中声明时,或是在注解接口中定义默认值时,都不能以 null 作为其值(可以用空字符串或负数表示某个元素不存在)