From Gossip@Openhome

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"})