注释(Annotations)
注释是可以添加到代码中的修饰符,可以用于包声明、类型声明、构造函数、方法、字段、参数和变量。Tiger 包含内置注释,还支持您自己编写的定制注释。
它的三种内置注释:SuppressWarnings, Deprecated, and Override。
SuppressWarnings
这种注释在类和方法级别阻止编译器抛出的警告。有时你知道使用一些不被推荐使用的方法更好一些或者必须执行一些存在型别安全的静态方法,如果使用这些方法将不断地收到根本无关的事情的警告。SuppressWarnings能使编译器不给您增添麻烦!
SupressWarnings 是具有变量的 — 所以您将单一注释类型与该变量一起使用。可以以值数组来提供变量,其中每个值指明要阻止的一种特定警告类型。
@SuppressWarnings("deprecation")//使用不被推荐的方法 public static void selfDestruct() { Thread.currentThread().stop(); }
@SuppressWarings("unchecked") public void nonGenericsMethod() { List wordList = new ArrayList(); // 没有指明List中值的类型 wordList.add("foo"); // 可能引发异常 }
SuppressWarnings 中变量的值采用数组,使您可以在同一注释中阻止多个警告。例如,
@SuppressWarnings("unchecked", "fallthrough")
使用两个值的数组。此功能为处理错误提供了非常灵活的方法,无需进行大量的工作。
Deprecated
Deprecated的用处不是很大。使用
Deprecated
来对不应再使用的方法进行注释。大多数情况下@Deprecated和javadoc同时使用。
public class DeprecatedClass { @Deprecated public void doSomething() { // 代码
}
//替换doSomething()的方法,可能实现更好一点 public void doSomethingElse() { // 代码 } }
如果通过覆盖或调用来使用声明为过时的方法,编译器将处理注释,发现不应该使用该
方法,并发出错误消息。
Override
Override 应该仅用于方法(不用于类、包声明或其他构造)。它指明注释的方法将覆盖超
类中的方法。
@Override public int hashCode() { ... }
如果你将hashCode() 写成hashcode() "C",编译时不会出错,只有在运行时才会报错。通过使用Override注释,如果实际没有执行重载编译时就会报错。Override注释在父类方法改变时也会发生效用。比如父类方法新增了一个参数或者方法改名了,那么子类编译时就会出错,就不会令人很迷惑了。