@SuppressWarnings

   J2SE 提供的最後一個批註是 @SuppressWarnings。該批註的作用是給編譯器一條指令,告訴它對被批註的代碼元素內部的某些警告保持靜默。
   @SuppressWarnings 批註允許您選擇性地取消特定代碼段(即,類或方法)中的警告。其中的想法是當您看到警告時,您將調查它,如果您確定它不是問題,您就可以添加一個 @SuppressWarnings 批註,以使您不會再看到警告。雖然它聽起來似乎會屏蔽潛在的錯誤,但實際上它將提高代碼安全性,因爲它將防止您對警告無動於衷 — 您看到的每一個警告都將值得注意。
   
下面是使用 @SuppressWarnings 來取消 deprecation 警告的一個例子:
public class DeprecatedExample2 {
@Deprecated
public static void foo() {
}
}

public class DeprecatedUser2 {
@SuppressWarnings(value={"deprecation"})
public static void main(String[] args) {
DeprecatedExample2.foo();
}
}
@SuppressWarnings 批註接收一個 "value" 變量,該變量是一個字符串數組,它指示將取消的警告。合法字符串的集合隨編譯器而變化,但在 JDK 上,可以傳遞給 -Xlint 的是相同的關鍵字集合(非常方便)。並且要求編譯器忽略任何它們不能識別的關鍵字,這在您使用一些不同的編譯器時非常方便。
因爲 @SuppressWarnings 批註僅接收一個參數,併爲該參數使用了特殊的名稱 "value",所以您可以選擇省略 value=,作爲一種方便的縮寫:
public class DeprecatedUser2 {
@SuppressWarnings({"deprecation"})
public static void main(String[] args) {
DeprecatedExample2.foo();
}
}
您可以將單個數組參數中的任意數量的字符串值傳遞給批註,並在任何級別上放置批註。例如,以下示例代碼指示將取消整個類的 deprecation 警告,而僅在 main() 方法代碼內取消 unchecked 和 fallthrough 警告:
import java.util.*;

@SuppressWarnings({"deprecation"})
public class NonGenerics {

@SuppressWarnings({"unchecked","fallthrough"})
public static void main(String[] args) {
Runtime.runFinalizersOnExit();

List list = new ArrayList();
list.add("foo");
}

public static void foo() {
List list = new ArrayList();
list.add("foo");
}
}
@SuppressWarnings 是否比前兩個批註更有用?絕對是這樣。不過,在 JDK 1.5.0 版本中還沒有完全支持該批註,如果您用 1.5.0 來嘗試它,那麼它將類似無操作指令。調用 -Xlint:-deprecation 也沒有任何效果。Sun 沒有聲明什麼時候將增加支持,但它暗示這將在即將推出的一個 dot 版本中實現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章