7

注釈処理はまだJava 6+のアクティブな部分ですか、それとも非推奨/非推奨/廃止されたものですか. 廃止された場合、その理由は何ですか? そして、それがまだ非常に有用で「アクティブ」である場合 (Java 6+ JDK に対して開発されている新しい Java プロジェクトは引き続きそれから恩恵を受けるでしょう)、注釈プロセッサがどのように使用されるかについての私の理解を確認/修正してください:

  1. たとえば、独自の注釈クラスを作成します。@MyAnnotation
  2. 特定のクラス、メソッド、フィールドなどを@MyAnnotation
  3. ビルド プロセス中に、カスタムを呼び出しますMyAnnotationProcessor(どのように? )
  4. プロセッサは、クラスパスをスキャンして次のインスタンスを探します。@MyAnnotation
  5. 通常、アノテーション プロセッサは動的なバイトコード インジェクションを実行し、コンパイルされたクラスをオンザフライで変更/強化します。
4

1 に答える 1

16
  1. 正しい。
  2. 正しい。
  3. 正しい。通常、延長しAbstractProcessorます。MyAnnotationProcessorパターンを使用してクラスを指定します。ServiceLoaderこれにより、コンパイラが検出できるようになります。ProcessorJavadoc には、このクラスの作成に関する情報が含まれています。
  4. 正しい。
  5. この部分は正しくありません。アノテーション プロセッサ フレームワークでは、クラスを変更することはできません。ビルドの一部としてこれを行うには、コンパイル後のプロセスを使用する必要があります。それできることは、新しいファイルを作成することです。これらは、単純なリソース、新しい Java ソース ファイル (後で必要になり、同じコンパイル中にアノテーション プロセッサに適格となる)、または Java クラス ファイルの場合があります。また、ソース コードに対してカスタム チェックを実行し、ログにエラーを書き込むこともできます (コンパイルが失敗する原因となります)。

それがあなたの理解の質問に対処することを願っています.

于 2013-01-29T12:54:55.490 に答える