アノテーションとは
プログラムの構成要素に付与するメタ情報。
アノテーションとは日本語で「注釈」という意味です。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