0.背景
Java注解--Annotation产生于JDK5。作为code的特殊“标记”,注解可以在编译、类加载、运行时被读取,并执行处理。
开发利用注解在源码中嵌入补充信息,工具(代码分析、开发、部署工具等)通过这些信息验证、处理或部署。
1.定义Annotation
使用关键字 @interface,与定义接口类似,如:
1 public @interface Test{ 2 }
使用注解,单独一行,如:
1 @Test 2 public class MyClass{ 3 .... 4 }
1.1 成员变量
注解只有成员变量,没有方法。成员变量以“无形参方法”形式定义,如下 name、age是变量名,其类型分别是String,int
1 public @interface MyTag{ 2 string name(); 3 int age(); 4 }
如果定义变量,在使用时必须赋值,也可以定义时指定默认值。
1 public @interface MyTag{ 2 string name() default "我兰"; 3 int age() default 18; 4 }
根据是否包含成员变量,注解分为 标记 和 元数据 两类。标记元Annotation 仅仅用自身存在提供信息,如@override;元数据Annotation 可以携带更多数据。
1.2 元注解
元注解(JDK提供),可以修饰注解定义。JDK提供4个元注解,此处不详细介绍,如下:
@Retention
@Target
@Documented
@Inherited
1.3 基本注解
JDK提供如下基本注解:
@Override
限定重写父类方法。子类中被@Override 修饰的方法,如果存在对应的被重写的父类方法,则正确;如果不存在,则报错;
@Deprecated
表示某个程序元素(类、方法等)已过时。
@SuppressWarning
抑制编译器警告。例如 @SuppressWarning(value="unchecked")
@SafeVarargs
JDK 7 专门为抑制“堆污染”警告提供的。