Java 注解(Annotation)
- 又称 Java 标注
- JDK 1.5 引入的一种注释机制
- 用来修饰程序的元素,但不会对被修饰的对象有直接的影响
- 只有通过 某种配套的工具 才会对注解信息进行访问和处理
– 主要用途:
• 提供信息给编译器 / IDE 工具
• 可用于其他工具来产生额外的代码 / 配置文件等
• 有一些注解可在程序运行时访问,增加程序的动态性
注解划分的三大类:内建注解/元注解/自定义注解
1.内建注解
- @Override 表示继承和重写
– 修饰方法,检查该方法是父类的方法 - @Deprecated 表示废弃
– 修饰类 / 类的元素 / 包
– 标注为废除,建议不再使用这个类 / 元素 / 包 - @SuppressWarnings 表示压制警告
– 可以修饰变量 / 方法 / 构造函数 / 类等
– 压制各种不同类型的警告信息,使得编译器不显示警告
– @SuppressWarnings(“unchecked”) 忽略 unchecked 警告信息
– @SuppressWarnings(“deprecated”) 忽略过时方法的警告信息
– @SuppressWarnings({“unchecked” ,“deprecated”}) 忽略两种警告
信息
– @ SuppressWarnings(values={“unchecked” ,“deprecated”}) 同上
– @ SuppressWarnings( “all”) 忽略所有的警告信息
– @ SuppressWarnings( “cast”) 忽略类转型警告
– @ SuppressWarnings( “serial”) 忽略实现 Serializable 接口的,没有定义serialVersionUID
• 使用 javac - - X 可以看当前的编译器使用哪些警告类型
- @ SafeVarargs 不会对不定项参数做危险操作
- @ FunctionInterface 声明功能性接口
2.元注解:用来修饰其他的注解
- @Target 设置目标范围
– 限定目标注解作用于什么位置@Target({ElementType.METHOD})
– ElementType.ANNOTATION_TYPE (注:修饰注解)
– ElementType.CONSTRUCTOR
– ElementType.FIELD
– ElementType.LOCAL_VARIABLE
– ElementType.METHOD
– ElementType.PACKAGE
– ElementType.PARAMETER
– ElementType.TYPE - @Retention 设置保持性
– 示例: @Retention(RetentionPolicy.RUNTIME)
– 用来修饰其他注解的存在范围
– RetentionPolicy.SOURCE 注解仅存在源码,不在 .class 文件。
– RetentionPolicy.CLASS 这是默认的注解保留策略 。注解存在于
.class 文件,但是不能被 JVM 加载。
– RetentionPolicy.RUNTIME 这种策略下,注解可以被 JVM 运行时
访问到。通常情况下,可以结合反射来做一些事情。 - @Documented 文档
– 指明这个注解可以被 Javadoc 工具解析,形成帮助文档 - @Inherited 注解继承
– 让一个类和它的子类都包含某个注解
–普通的注解没有继承功能 - @Repeatable 此注解可以重复修饰
– 自 JDK1.8 引入
– 表示被修饰的注解可以重复应用标注
– 需要定义注解和容器注解
3.自定义注解
- 扩展于 java.lang.annotation.Annotation
- 成员可以包括多种类型
- 使用时可以给注解成员赋值
@interface