Java標準アノテーション(Annotation)

アノテーションのうち、Java SE標準で提供されるアノテーションを標準アノテーションという。

Java SE 8の時点では、次のような標準アノテーションがある。

@Overrideアノテーション: オーバーライドを明示

そのメソッドがスーパークラスのメソッドをオーバーライド(override)していることを宣言する。省略しても動作自体に支障はないが、明示することでメソッド名や引数に誤りがある場合にコンパイラが警告を発生させる。

例) 次は@Overrideアノテーションの例である。

public class Animal {
    public void speak() {
    }

    public String getType() {
        return "Generic animal";
    }
}

public class Cat extends Animal {
    @Override
    public void speak() { // This is a good override.
        System.out.println("Meow.");
    }

    @Override
    public String gettype() { // Compile-time error due to mistyped name.
        return "Cat";
    }
}

@Deprecatedアノテーション: これ以上使用されないクラスやメソッドに宣言

そのメソッドが非推奨で、これ以上使用されないクラスやメソッドであることを宣言する。このメソッドを使用したコードはコンパイル時に警告を発生させる。

@Deprecated
public void foo() { ... }

@SuppressWarningsアノテーション: 警告メッセージの抑制

コンパイラが特定の警告を発生させることを抑制する。例えば、下位互換性などの事情により非推奨メソッドを意図的に使用している場合、毎回警告が出るのは妨げになる。このような場合にこのアノテーションを宣言し、明示的に警告を消すことができる。

@SuppressWarnings("deprecation")
public static void main(String[] args) {
    ClassSample g = new ClassSample();
    g.hoge(); // 非推奨fooメソッド
}

その他、@SuppressWarningsアノテーションで使用できる設定は次のとおりである。

@SuppressWarningsアノテーションの基本設定

設定値 警告内容
cast 不要なキャスト
deprecation 非推奨メンバーの利用
divzero 0による除算
unused 使用されていない変数がある

参考