大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 抑制编译器警讯 - SuppressWarnings

java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation类型之一,它对编译器说明某个方法中若有警示讯息,则加以抑制,不用在编译完成后出现警讯。

在这边到说明SuppressWarnings的功能,考虑下面这个类:

  • SomeObject.java
import java.util.*;

public class SomeObject {
public void doSomething() {
Map map = new HashMap();
map.put("some", "thing");
}
}

在J2SE 5.0中加入了集合对象的Generics支持,并建议您明确的指定集合对象将内填的对象之类型,在上面这个类中使用Map时并没有指定内填对象之型 别,在编译时会出现以下的讯息:
Note: SomeObject.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

在编译时一并指定-Xlint:unchecked可以看到警示的细节:
SomeObject.java:7: warning: [unchecked] unchecked call to put(K,V) as a member o f the raw type java.util.Map
map.put("some", "thing");
^
1 warning

如果您想让编译器忽略这些细节,则可以如下使用SuppressWarnings这个Annotation:

  • SomeObject.java
import java.util.*;

public class SomeObject {
@SuppressWarnings(value={"unchecked"})
public void doSomething() {
Map map = new HashMap();
map.put("some", "thing");
}
}

这么一来,编译器将忽略掉"unckecked"的警讯,您也可以指定忽略多个警讯:
@SuppressWarnings(value={"unchecked", "deprecation"})