tonglin0325的个人主页

元注解(Annotation)

J2SE 5.0提供了很多新的特征。其中一个很重要的特征就是对元数据(Metadata)的支持。在J2SE 5.0中,这种元数据称为注解(Annotation)。

通过使用注解,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。

 

系统内建的Annotation

在JDK1.5之后,系统已经建立了如下3个内建的Annotation类型,用户直接使用即可。

 

@Override

 

 

@Deprecated

 

 

@SuppressWarmings

 

自定义Annotation

@Target注释

 

 

@Documented注释

 

 

@Inherited注释

 

@Retention#

Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时).

Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中

1
2
3
4
5
6
7
public enum RetentionPolicy {

SOURCE, // 源文件保留
CLASS, // 编译期保留,默认值
RUNTIME // 运行期保留,可通过反射去获取注解信息
}

生命周期长度 SOURCE < CLASS < RUNTIME ,前者能作用的地方后者一定也能作用。

如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解;

如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;

如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,则可选用 SOURCE 注解。