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 | public enum RetentionPolicy { |
生命周期长度 SOURCE < CLASS < RUNTIME ,前者能作用的地方后者一定也能作用。
如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解;
如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife),就用 CLASS注解;
如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,则可选用 SOURCE 注解。