2

Minecraft サーバー プラグインを作成して Java スキルを磨こうとしていたときに@EventHandler、Bukkit プラグイン開発のコード例に出くわしました。これはメソッドの実装のすぐ上に配置されており、何と呼ばれているのか疑問に思っていました。

どこかで見@Overrideたことがあるので、オンラインで検索できるように名前を知りたいです...

4

5 に答える 5

6

このことを注釈と呼びます。Python では、Java アノテーションに相当するものをデコレータと呼びます。

于 2013-06-29T17:10:01.220 に答える
6

それは注釈です。

メタデータの形式である注釈は、プログラム自体の一部ではないプログラムに関するデータを提供します。注釈は、注釈を付けたコードの操作に直接影響しません。

ドキュメントから、注釈の使用法は主に

  • コンパイラー向けの情報— コンパイラーは注釈を使用して、エラーを検出したり、警告を抑制したりできます。
  • コンパイル時および展開時の処理— ソフトウェア ツールは注釈情報を処理して、コードや XML ファイルなどを生成できます。
  • 実行時処理— 一部の注釈は、実行時に調べることができます。
于 2013-06-29T17:10:36.440 に答える
2

OK、注釈とは何かへのリンクを複製しません。むしろ、それらがどのように機能するかについて話します。

注釈には aTargetと a の両方がありRetentionます。オプションで、@Documentedこの注釈がソース コード内のある時点で存在していたことがわかるようにすることもできます。次に、ターゲットとリテンションについて説明します。これら 2 つの「メタアノテーション」、期待できるものに確実に影響を与えるからです。

  • ターゲットは、その注釈を適用できる対象を決定します。これは、クラス全体、インスタンス変数、メソッドなどにすることができます...まあ、ドキュメントを参照してください。
  • 保持は、この注釈がソース コードに保持される「期間」を決定します。大部分で使用される 2 つの保持ポリシーはSOURCE、 とRUNTIMEです。

あなたのようなアノテーションでは、それは通常、ランタイム保持ポリシーを持つアノテーションです。このような注釈は、実行時に特定の処理コードによって使用され、ターゲットの動作を変更して、その動作がこの処理コードによって制御されるようにすることができます。このようなコードは、論理的に注釈プロセッサと呼ばれます。

一部の JSR では、アノテーションがかなり重要視され始めています。

  • JSR 330 では@Inject@Providerなどをランタイム アノテーションとして定義しているため、依存性注入を行うフレームワークは、存在するこれらのアノテーションに依存できます。これは、たとえば、Dagger や Guice (バージョン 3.0 以降) などの依存性注入フレームワークの場合です。
  • JSR 305 は、、、、、をソース保持ポリシーで定義し@Immutable@ThreadSafeおよびを定義します。これらの注釈は、静的コード分析ツールで使用できます。同様に重要ですが、通常は同様に使用されます。したがって、あなたは彼らに何を期待するかを知っています。@NotThreadSafe@Nullable@Nonnull@Documented@Documented
于 2013-06-29T17:16:28.080 に答える
0

単なる注釈です。

@Override for ie は、拡張された「スーパークラス」で同じ名前のメソッドをオーバーライドするメソッドで使用されます

于 2013-06-29T17:12:00.823 に答える
0

注釈です。

通常、コードに直接影響を与えることはありませんが、一部のオブジェクト データベースでは、インデックス付け、キー付け、またはその他の機能に関して 1 つまたは複数のフィールドの動作を指定するために使用される場合があります。

于 2013-06-29T17:12:24.867 に答える