パート 1. SOURCE 型と CLASS 型のアノテーションについて非常に簡単に書きました。後半で迷子にならないように、そしてあなたの「誤解」を少し広げるために、これは読む価値があります =) 少なくとも 1 つは必ず知っている単語があることを保証します。
ここのタスクの注釈を初めて見たとき、どういうわけか注釈にあまり注意を払いませんでした。@Override があちこちにありますが、IDEA がそれを追加するので、そうする必要があると思いました。時間が経つにつれて、すべてはもっと奥深いことに気づきました。勉強していると、注釈は多少役に立たないように思えるかもしれませんが、必要です。彼らがなぜ存在するのか、何をするのかわかりません。「注釈が付いているのはとても素晴らしいことです。すべてがとてもシンプルになりました。」という記事をいくつか読んだことがあるでしょう。しかし、私は以前がどうだったかを知りませんでしたし、今は物事が楽になっているということを理解していませんでした。今、私は知っているので、少し共有したいと思います。 (RetentionPolicy) アノテーションには 3 つのタイプがあります。
ネイティブ— これは見たことも使用したこともありません。これは、別の「ネイティブ」言語でコードを実行する必要がある場合に使用されるため、かなり珍しいアノテーションだと思います。私はそれについての明確な言及を見つけようとしましたが、見つかりませんでした。
SuppressWarnings — このアノテーションは、@SuppressWarnings("unchecked") のように使用されることがよくあります。すでに認識している警告を抑制するために使用されます。前の例では、チェックされていない型変換に関する警告が抑制されます。繰り返しますが、これは私が遭遇した唯一の使用法です。
生成済み— XSD ファイルからクラスを生成する必要がある割り当てのため、現在このアノテーションに遭遇しています。これら 3 つの注釈は非常に具体的であり、現時点ではおそらく興味を持たないでしょう。最後について説明します。
オーバーライド— 常に使用すると、非常に便利な機能が得られます。メソッドをオーバーライドする場合、IDEA の助けがないと間違いを犯しやすくなります。タイプミスであろうと単純な間違いであろうと、間違いは起こります。このアノテーションは、親クラスのメソッドが (アノテーション付きの) メソッドと一致することを確認します。これにより、メソッドが追加されるのではなく確実にオーバーライドされます。コードをリファクタリングする場合、親メソッドが削除または変更される場合があります。繰り返しますが、この注釈はエラーを示します。それがなければ、私たちのメソッドは単に追加されるだけになります。 つまらない?私ならそうだと思います。この記事から得られる情報はあまりありません。ここにあるほぼすべて (90%) は、決して使用されないか、または非常にまれにしか使用されないものについて説明しています。残りの 10% は @Override アノテーションへの挨拶と説明を行っていますが、これは一見役に立ちません。そうは言っても、記事の後半はより興味深いものになると思います。RUNTIME アノテーションについて説明します。ランタイム アノテーションは実行中にコードと対話し、黒魔術を行います。 注釈。パート 2. ロンボク島

- SOURCE — コンパイラの注釈
- CLASS — アノテーションからの情報はバイトコードで書き込まれますが、実行時には利用できません。標準ライブラリにはこのタイプの注釈が多数あり、現在は下位互換性のために残されているとのことです。これは非常に特殊なタスクに使用されます。
- StackOverflow に関する Q&A
- 実行時— これらの注釈が最も人気があります。これらはコードの実行中に使用されます。
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- ネイティブ— この注釈が付いた変数はネイティブ コードを参照する場合があります。
- SuppressWarnings — このアノテーションは、さまざまなコンパイラ警告を抑制します。
- Generated — この注釈は、生成されたソース コードをマークします。
- Override — このアノテーションはメソッドのオーバーライドをチェックします。
GO TO FULL VERSION