3

Cで利用可能で、アンテナによって提供されるプリプロセッサのような機能を作成することは可能ですか? APT ツールを使用してこの機能を実現できますか? 同様のトピックに関する記事やリンクはありますか?

4

2 に答える 2

2

注釈は、コードを変換するためのツールではありません。コードにメタデータを追加するだけです。たとえば、条件付きコンパイルに注釈を使用することはできません。

注釈に関するSunのチュートリアルが言うように:

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

ウィキペディアは次のように述べています。

Java ソース コードがコンパイルされると、注釈プロセッサと呼ばれるコンパイラ プラグインによって注釈を処理できます。プロセッサは、情報メッセージを生成したり、追加の Java ソース ファイルまたはリソースを作成したりして、コンパイルおよび処理することができますが、注釈付きコード自体を変更することはできません。

したがって、アノテーション プロセッサ プラグインは、C プリプロセッサが持つすべての機能を提供することはできません。

于 2009-09-23T07:57:33.690 に答える
2

注釈処理フレームワークを使用して、コンパイル時のタスクを実行できます。次のようなことができないため、プリプロセッサほど強力ではありません。

@RunOnlyOn(OS.Mac) public void someMethod() { ... }

注釈プロセッサの適切な使用例は次のとおりです。

  • 注釈付きクラスからマッピング ファイルを作成します。たとえば、休止状態のマッピング ファイルを作成します。
  • 特定の注釈を持つクラスのインデックスを作成します。たとえば、テスト クラスのソース フォルダーから testng xml ファイルを作成します。
  • 通常は利用できないコンパイル時の制約を強制します。たとえば、引数なしのコンストラクターを使用します。

Java 6 では、適切に宣言されたすべての注釈プロセッサがコンパイルに参加するため、APT は不要になったことに注意してください。

于 2009-09-23T07:58:43.703 に答える