注解定义内容解释:
@Target,用户描述注解的作用范围
取值(ElementType)有:
- CONSTRUCTOR:用于描述构造器
- FIELD:用于描述域
- LOCAL_VARIABLE:用于描述局部变量
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述参数
- TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Retention,表示需要在什么级别保存该注释信息
取值(RetentionPoicy)有:
- SOURCE:在源文件中有效,在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。@Override, @SuppressWarnings都属于这类注解。
- CLASS:在class文件中有效,在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式
- RUNTIME:在运行时有效,始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。
@Documented,是一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中
@Inherited,阐述了某个被标注的类型是被继承的,如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
public @interface 注解名 {定义体}