什么是注解
注解也叫元数据,一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
根据注解所起的作用,大致可分为三类:
编写文档:通过代码里标识的元数据生成文档。
代码分析:通过代码里标识的元数据对代码进行分析。
编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查
元注解
元注解是一种注解在注解上的注解,元注解标签有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 种。
@Retention:注解有效时间
- RetentionPolicy.RUNTIME:在运行时有效
- RetentionPolicy.SOURCE:在源文件中有效
- RetentionPolicy.CLASS:在class文件中有效
@Target:可以注解的目标
- ElementType.TYPE:注解在类、接口、枚举
- ElementType.FIELD:注解在字段、枚举常量
- ElementType.METHOD:注解在方法
@Documented:能够将注解中的元素包含到 Javadoc 中去
@Inherited:表示该注解可以被继承,举个栗子:
- @Inherited注解在Annotation注解类上
- @Annotation注解在Test类上
- TestEX继承了Test
- 结果,TestEX类会把@Annotation注解继承下来
@Repeatable:于声明标记的注解为可重复类型注解,可以在同一个地方多次使用
基本内置注解
@Override:被注解的方法必须是重写方法,表示父类一定存在这个方法
@Deprecated:被注解的地方表示不推荐使用,以后的版本可能会取消
@SuppressWarnings:忽略编译器警告信息
@SafeVarargs:使用可变数量参数的时候,而参数的类型又是泛型T的话,就会出现警告,可以用该注解去掉这是警告
@FunctionalInterface:用于约定函数式接口(只有一个抽象方法)
基本内置注解大多时候是可有可无的,了解就好