3
2

More than 1 year has passed since last update.

Javaのアノテーション

Posted at

アノテーションとは

プログラムの構成要素に付与するメタ情報。
アノテーションとは日本語で「注釈」という意味です。Javaではコンピューターに対してソースコードだけでは命令しきれない情報を伝えるために使用します。

標準ライブラリに含まれる主なアノテーション

アノテーション名 意味
Override オーバーライドしたメソッド
Deprecated 非推奨であることを明示
SuppressWarnings コンパイルの警告メッセージを抑制
SafeVarags ジェネリック型の可変長引数の警告メッセージの抑制
FunctionalInterface 関数型インターフェイスを表示
Native フィールドがネイティブコード由来であることを明示

使い方

@Override

overrideをつけると、「このメソッドはオーバーライドしているメソッドです」という注釈になります。
基となるメソッドが無く、オーバーライドしていると言えない場合はエラーが発生するようになります。


class AnimalOverride {
    public void eat() {
        System.out.println("むしゃむしゃ");
    }
}

class Animal extends AnimalOverride {
    @Override //アノテーション
    public void eat() { //メソッド名がeat以外だとオーバーライドしたことにならないのでエラー
        System.out.println("ぱくぱく");
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Animal animal = new Animal();
        animal.eat(); //ぱくぱくと出力される
    }
}

Animalクラスのメソッドがeat以外だと、オーバーライドしたことにならないので「オーバーライドしていませんよ」とエラーで教えてくれる。

@Deprecated

Deprecatedは推奨しない対象要素を明示します。「このメソッドやクラスは非推奨です」というエラーを出すために使います。開発者に新しい機能への移行をうながします。


class Animal {
    @Deprecated //アノテーション
    public void eat() {
        System.out.println("むしゃむしゃ");
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        Animal animal = new Animal();
        animal.eat();
    }
}

//実行結果
Documents $ 1java animal.java
注意 :animal.javaは推奨されないAPIを使用またはオーバーライドしています
注意 :詳細は-Xlint:deprecationオプションを指定して再コンパイルしてください

@SuppressWarnings

SuppressWarningsは警告を抑制する指示です。何か間違ったコードを書くとコンパイルエラーが発生しますが、このアノテーションを使うと警告を抑制して強制的に実行することができます。
()の中でどの警告を抑制するか指定します。

@SuppressWarnings("divzero") //ゼロに対して除算している
@SuppressWarnings(unused) //使っていない変数がある

@SuppressWarningsに指定できる文字列はjavaコンパイラに依存します。下のコマンドで指定可能な文字列を調べることができます。

//JDK8の場合
$ javac -X
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2