Annotation(注解)
这个新特性是在 java1.5 之后被引入的。在 java编程思想 中是这么说的:
注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后的某个时刻非常方便地使用这些数据
Annotation
,顾名思义是用来解释说明的东西。Java中的注解是一种代码级别的说明。它与类、接口、枚举是在同一个层次,它可以声明在包、类、字段、方法、局部变量、方法参数等前面,用来对这些元素进行说明和注释。所以有一个基本的规则:注解不能影响程序代码的执行,无论增加、删除注解,代码都始终如一的执行。注解可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检测。所以其作用分类大致可以区别为以下三种:
- 编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】【@Documented】
- 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
- 编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【@Override】
Annotation
像是一个特殊的java接口。每个Annotation
都有一个名字和 >= 0 的参数。就像使用class
或者interface
来定义类或者接口一样,Annotation
通过使用@interface
关键字来定义一个注解。根据成员参数的数量,可以将注解区别为以下几类:
- 标记注解:比如经常使用的@Override
- 单值注解
- 完整注解
java自身提供了三个Annotation
:
@Override
是一个标记注解类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。如果我们使用了这种Annotation在一个没有覆盖父类方法的方法时,java编译器将以一个编译错误来警示。这个注解常常在我们试图覆盖父类方法而确又写错了方法名时发挥威力。使用方法极其简单:在使用该注解时只要在被修饰的方法前面加上@Override
即可。
@Deprecated
也是一个标记注解。当一个类型或者类型成员使用@Deprecated
修饰的话,编译器将不鼓励使用这个被标注的程序元素。而且这种修饰具有一定的 “延续性”:如果我们在代码中通过继承或者覆盖的方式使用了这个过时的类型或者成员,虽然继承或者覆盖后的类型或者成员并不是被声明为@Deprecated
,但编译器仍然要报警。
@SuppressWarnings
被用于有选择的关闭编译器对类、方法、成员变量、变量初始化的警告。在编写程序过程中,若遇到警告提示,而你又可以确定它没有影响的时候,可以增加@SuppressWarnings修饰,告诉编译器停止警告。@SuppressWarning
不是一个标记注解。它有一个类型为String[]
的成员,这个成员的值为被禁止的警告名。
@SuppressWarnings
常见参数值说明:
- deprecation:使用了不赞成使用的类或方法时的警告;
- unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型;
- fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
- path:在类路径、源文件路径等中有不存在的路径时的警告;
- serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
- finally:任何 finally 子句不能正常完成时的警告;
- all:关于以上所有情况的警告。