@SuppressWarningsアノテーションのvalueプロパティに指定できる値

Eclipseを使っているとQuick Fixの候補としてよく登場する@SuppressWarningsアノテーション。このアノテーションvalueプロパティには"unchecked"等が指定できるが、指定できる文字列としては他に何があるのだろうか。

というわけで調べてみた。

試しにEclipse3.4で「@SuppressWarnings()」と入力して括弧のところでCTRL-SPACEを押してみたが、特にそれらしい候補は表示されなかった。

次にSuppressWarningsのJavadocを見てみた。

valueプロパティの説明には、

注釈を付けられた要素でコンパイラにより抑制される警告のセットです。

と書かれている。ということは、コンパイラの警告を表す文字列を指定できるということか。

次にSunのJDK1.5のjavacの説明を見てみた。

上記説明ページ内で「警告」を検索してみると、-nowarnオプションの説明があった。

 -nowarn
   警告メッセージを無効にします。これは -Xlint:none と同じ意味です。

ということで、「-Xlint:XXXX」のXXXXこそが@SuppressWarningsに指定できる値なのではないか?という気がしてくる。

さらに説明ページを読み進めると、「-Xlint:」に指定できる文字列には以下のものがあるらしい。

  • deprecation
  • fallthrough
  • finally
  • none
  • path
  • serial
  • unchecked

念のため、これらの一つ一つをEclipseで指定して試してみた。

  • deprecation ... OK
  • fallthrough ... OK
  • finally ... OK
  • none ... NG
  • path ... NG
  • serial ... OK
  • unchecked ... OK

NGのものについては、Eclipseが「Unsupported @SuppressWarnings("none")」と警告を出していたので指定不可と判断した。あと試しに「all」を指定してみたところ、これもOKだった。しかもallなだけに、上記Eclipseの警告も抑制された。

ということで結論。Eclipse3.4+JDK1.5では@SuppressWarningsのvalueプロパティとして以下のものが指定可能。

  • all
  • deprecation
  • fallthrough
  • finally
  • serial
  • unchecked