2012年3月24日土曜日

SafeVarargsアノテーション

総称型の可変長引数を持つメソッドのワーニングを抑制するためのjdk7から追加されたアノテーション。

例えば、以下のコードをコンパイルした場合、ワーニングとして「Hoge.javaの操作は、未チェックまたは安全ではありません。」が出力される。
public class Hoge {

    public static void main(String[] args) {
        Collection collection = hoge("1", "2");
    }

    public static  Collection hoge(T... elements) {
        return Arrays.asList(elements);
    }
}

このワーニングを抑制するために、「SafeVarargs」を対象のメソッドhogeに追加をしてあげるとよい。
ちなみに、このアノテーションはstaticかfainalなメソッドにしか設定できないので、非finalなインスタンスメソッドに設定すると、以下のようなコンパイルエラーが発生する。
エラー: SafeVarargs注釈が無効です。インスタンス・メソッドhoge(T...)はfinalではありません。
Tが型変数の場合:
メソッド hoge(T...)で宣言されているT extends Object