「こんにちは、アミーゴ!」

「こんにちは、リシさん」

今日はアノテーションについて詳しく紹介します。

「おそらくすでにご存知かと思いますが、アノテーションはクラス、フィールド、メソッド、変数の横に置くことができる特別な単語です。」

「はい。よく遭遇します。」

「メタデータと呼ばれることもあります。その主な目的は、メソッド、フィールド、クラスに関する特定の追加情報を保存することです。」

「誰のために保管しているのですか?」

「それはとても良い質問ですね。」

「人々は注釈を書きます。つまり、誰かがそれを必要としているはずです。」

「注釈を使用すると、コードとプログラム要素に関する追加情報を保存できますが、形式的には、注釈はコードの一部ではありません。」

「アノテーションは、XML の生成、メソッドが非推奨かどうかの判断、バグの追跡などに使用できます。」

「コード内の注釈の例は次のとおりです。」

@CatInfo(manager=Catmanager.class, unique=true)
class Cat
{
 @Name("Missy")
 private String name;

 @SuppressWarnings(value = "unchecked")
 void getUniqueCatName()
 {

 }
}

「ご覧のとおり、データはアノテーションに保存できます。」

「注釈にvalueという名前のフィールドが 1 つだけある場合、フィールド名は省略できます。」

@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

「括弧内にパラメータがない場合は省略することもできます。」

@Override
void getUniqueCatName()
{

}

「独自のアノテーションを作成するのは非常に簡単です。アノテーションの宣言は、インターフェイスの宣言とほぼ同じです。」

@interface CatManager
{
 Class manager();
 boolean unique();
 String name() default "Unknown Cat";
}

「違いはいくつかあるだけです。」

「まず、インターフェイスという単語の前に«@»記号を置きます。」

「2 番目に、注釈にはデフォルト値を設定できます。デフォルト値を設定するには、default という単語を使用します。上の例を参照してください。これらのパラメータはオプションであり、注釈を追加するときに省略できます。」

「ああ。思っていたよりもすべてが簡単だ。それに、ロボ悪魔が聖水を避けるように、私はそれらを避けてきた。コードに完全に理解できないことがたくさんあるのは、あまり楽しいものではない。」

「ああ、思い出させてくれて良かったです。コンパイラで使用されるアノテーションについて詳しくお話したいと思います。」

「そのような注釈は 3 つしかありません。まあ、今のところ 3 つです。」

@非推奨。

「クラスまたはメソッドに @Deprecated の注釈を付けることができます。これにより、コンパイラーが警告を発行し (警告はエラーではありません)、IntelliJ IDEA はこのメソッドを取り消し線のテキストとして表示します。次のようなものです :

Date date = new Date();
int year = date.getYear();

@オーバーライド。

「オーバーライドするメソッドに @Override アノテーションを追加することがベスト プラクティスと考えられています。」

「それは何のためですか? IDEA はメソッドがオーバーライドされているかどうかをすでに示しているのではありませんか?」

「まず、IDEA があり、次に Java 構文があります。」

「そして 2 番目に、仮に、サブクラスのメソッド名に対応する変更を行わずに、基底クラスのメソッドの名前が変更されるという状況が発生する可能性があります。プログラムは期待どおりに動作しませんが、誰も気付かないでしょう。このアノテーションは、次の目的で発明されました。このような状況が起こらないようにします。」

@Override
void getUniqueCatName()
{

}

@SuppressWarnings。

「コンパイラは、多くの警告を表示することがあります。また、私たちは«問題» を知っていて、それを作成する対応するコードを使用することを意図的に選択していることもあります。この注釈を使用して、これらの警告の一部を非表示にすることができます。」

「プログラマは@SuppressWarningsアノテーションを使用して、コンパイラに「このエラーについては警告を表示しないでください。これは意図的です。」と伝えることができます。例えば:"

@SuppressWarnings("unchecked")
void getUniqueCatName()
{

}

"とった。"

「ちょっと疲れてきたので、乾いた喉を潤していきます。休憩したら続きをしましょうね?」

"もちろん。"