Minecraft サーバー プラグインを作成して Java スキルを磨こうとしていたときに@EventHandler
、Bukkit プラグイン開発のコード例に出くわしました。これはメソッドの実装のすぐ上に配置されており、何と呼ばれているのか疑問に思っていました。
どこかで見@Override
たことがあるので、オンラインで検索できるように名前を知りたいです...
Minecraft サーバー プラグインを作成して Java スキルを磨こうとしていたときに@EventHandler
、Bukkit プラグイン開発のコード例に出くわしました。これはメソッドの実装のすぐ上に配置されており、何と呼ばれているのか疑問に思っていました。
どこかで見@Override
たことがあるので、オンラインで検索できるように名前を知りたいです...
このことを注釈と呼びます。Python では、Java アノテーションに相当するものをデコレータと呼びます。
それは注釈です。
メタデータの形式である注釈は、プログラム自体の一部ではないプログラムに関するデータを提供します。注釈は、注釈を付けたコードの操作に直接影響しません。
ドキュメントから、注釈の使用法は主に
- コンパイラー向けの情報— コンパイラーは注釈を使用して、エラーを検出したり、警告を抑制したりできます。
- コンパイル時および展開時の処理— ソフトウェア ツールは注釈情報を処理して、コードや XML ファイルなどを生成できます。
- 実行時処理— 一部の注釈は、実行時に調べることができます。
OK、注釈とは何かへのリンクを複製しません。むしろ、それらがどのように機能するかについて話します。
注釈には aTarget
と a の両方がありRetention
ます。オプションで、@Documented
この注釈がソース コード内のある時点で存在していたことがわかるようにすることもできます。次に、ターゲットとリテンションについて説明します。これら 2 つの「メタアノテーション」は、期待できるものに確実に影響を与えるからです。
SOURCE
、 とRUNTIME
です。あなたのようなアノテーションでは、それは通常、ランタイム保持ポリシーを持つアノテーションです。このような注釈は、実行時に特定の処理コードによって使用され、ターゲットの動作を変更して、その動作がこの処理コードによって制御されるようにすることができます。このようなコードは、論理的に注釈プロセッサと呼ばれます。
一部の JSR では、アノテーションがかなり重要視され始めています。
@Inject
、@Provider
などをランタイム アノテーションとして定義しているため、依存性注入を行うフレームワークは、存在するこれらのアノテーションに依存できます。これは、たとえば、Dagger や Guice (バージョン 3.0 以降) などの依存性注入フレームワークの場合です。@Immutable
、@ThreadSafe
およびを定義します。これらの注釈は、静的コード分析ツールで使用できます。同様に重要ですが、通常は同様に使用されます。したがって、あなたは彼らに何を期待するかを知っています。@NotThreadSafe
@Nullable
@Nonnull
@Documented
@Documented
単なる注釈です。
@Override for ie は、拡張された「スーパークラス」で同じ名前のメソッドをオーバーライドするメソッドで使用されます
注釈です。
通常、コードに直接影響を与えることはありませんが、一部のオブジェクト データベースでは、インデックス付け、キー付け、またはその他の機能に関して 1 つまたは複数のフィールドの動作を指定するために使用される場合があります。