注解(Annotation),也叫元数据(Metadata),是Java5的新特性。
注解分类:
1、基本内置注解,是指Java自带的几个Annotation,如@Override、Deprecated、@SuppressWarnings等;
2、元注解(meta-annotation),是指负责注解其他注解的注解,JDK 1.5及以后版本定义了4个标准的元注解类型,如下:
@Target
@Retention
@Documented
@Inherited
3、自定义注解,根据需要可以自定义注解,自定义注解需要用到上面的meta-annotation
工作中用到的自定义注解:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface APIS{
}
使用:@APIS
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface APIS{
String value();
}
使用:@APIS(“使用了APIS”)
@Retention(RetentionPolicy.RUNTIME)
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target,成员value是个数组,用{}形式赋值
*
@Target({ElementType.TYPE, ElementType.METHOD})*
取值(ElementType)有:
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
@Documented
使用@Documented来进行标注,如果使用@Documented标注了,在生成javadoc的时候就会把@Documented注解给显示出来。(区别:是否有@API注解。)
@Documented生成的javadoc
不带@Documented生成的javadoc
@Inherited
只有在类上使用时才会有效,对方法,属性等其他无效。
Inherited作用是,使用此注解声明出来的自定义注解,在使用此自定义注解时,如果注解在类上面时,子类会自动继承此注解,否则的话,子类不会继承此注解。