一. 三个系统内置标准注解
1.@Override 是一个标记注解类型, 它被用作标注方法. 它说明了被标注的方法重载了父类的方法, 起到了断言的作用. 如果我们使用了这种 Annotation 在一个没有覆盖父类方法的方法时, java 编译器将以一个编译错误来警示. 这个 annotaton 常常在我们试图覆盖父类方法而确又写错了方法名时发挥威力. 使用方法极其简单: 在使用此 annotation 时只要在被修饰的方法前面加上 @Override 即可.
2.@Deprecated, 标记已过时:
同 样 Deprecated 也是一个标记注解. 当一个类型或者类型成员使用 @Deprecated 修饰的话, 编译器将不鼓励使用这个被标注的程序元素. 而且这种修饰具有一定的 "延续性": 如果我们在代码中通过继承或者覆盖的方式使用了这个过时的类型或者成员, 虽然继承或者覆盖后的类型或者成员并不是被声明为 @Deprecated, 但编译器仍然要报警.
值得注意,@Deprecated 这个 annotation 类型和 javadoc 中的 @deprecated 这个 tag 是有区别的: 前者是 java 编译器识别的, 而后者是被 javadoc 工具所识别用来生成文档 (包含程序成员为什么已经过 时, 它应当如何被禁止或者替代的描述).
在 java5.0,java 编译器仍然象其从前版本那样寻找 @deprecated 这个 javadoc tag, 并使用它们产生警告信息. 但是这种状况将在后续版本中改变, 我们应在现在就开始使用 @Deprecated 来修饰过时的方法而不是 @deprecated javadoc tag.
3.SuppressWarnnings, 抑制编译器警告:
@SuppressWarnings 被用于有选择的关闭编译器对类, 方法, 成员变量, 变量初始化的警告. 在 java5.0,sun 提供的 javac 编译器为我们提供了 - Xlint 选项来使编译器对合法的程序代码提出警告, 此种警告从某种程度上代表了程序错误. 例如当我们使用一个 generic collection 类而又没有提供它的类型时, 编译器将提示出 "unchecked warning" 的警告. 通常当这种情况发生时, 我们就需要查找引起警告的代码. 如果它真的表示错误, 我们就需要纠正它. 例如如果警告信息表明我们代码中的 switch 语句没有覆盖所有可能的 case, 那么我们就应增加一个默认的 case 来避免这种警告.
有时我们无法避免这种警告, 例如, 我们使用必须和非 generic 的旧代码交互的 generic collection 类时, 我们不能避免这个 unchecked warning. 此时 @SuppressWarning 就要派上用场了, 在调用的方法前增加 @SuppressWarnings 修饰, 告诉编译器停止对此方法的警告.
SuppressWarning 不是一个标记注解. 它有一个类型为 String[] 的成员, 这个成员的值为被禁止的警告名. 对于 javac 编译器来讲, 被 - Xlint 选项有效的警告 名也同样对 @SuppressWarings 有效, 同时编译器忽略掉无法识别的警告名. @SuppressWarnings(value={ "rawtypes", "unchecked" })
- @SuppressWarnings({ "rawtypes", "unchecked" })
- @SuppressWarnings("unused")
来源: http://www.bubuko.com/infodetail-2650101.html