注解的定义
- 注解其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
 - Annotation能够用来为程序元素(类、方法、成员变量等)设置元数据
 - 访问和处理Annotation的工具统称APT(Annotation Processing Tool)
 
5类基本的Annotation
- @Override:用来指定方法的覆载
 - @Deprecate:用于标识某个程序元素(类、方法等)已过时
 - @SuppressWarnings:抑制编译器警告
 - @SafeVarargs:抑制堆污染警告
 - @FunctionalInterface:标识函数式接口
 
元Annotation
- 用于修饰其他的Annotation定义
 - @Retention:指定被修饰的Annnotation可以保留多长时间
 - @Target:指定被修饰的Annotation能用于修饰哪些程序单元
 - @Documented:被修饰的Annotation类将被javadoc工具提取成文档
 - @Inherited:指定被修饰的Annotation将具有继承性(添加具有继承性Annotation的类的子类将自动被该Annotation修饰)
 
自定义Annotation
- 定义新的Annotation类型使用@interface关键字
 - 示例123456@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Test{String name() default "Joe";int age() default 20;}