5

Java 1.5 からの保持ポリシーを理解しようとしています。しかし、鮮明な画像が得られません。

JavaDocに従って

  • CLASS- 注釈は、コンパイラによってクラス ファイルに記録されますが、実行時に VM によって保持される必要はありません。
  • RUNTIME- 注釈は、コンパイラによってクラス ファイルに記録され、実行時に VM によって保持されるため、反射的に読み取られる可能性があります。
  • SOURCE- 注釈はコンパイラによって破棄されます
  1. 「捨てられた」とはどういう意味ですか?
  2. SOURCE でマークすることで、クラスファイルに特定の注釈付き要素が含まれないようにしますか?
4

3 に答える 3

6

SOURCE注釈はソース ファイルにのみ存在します。

コンパイラが注釈を「破棄」すると、基本的に注釈が存在することさえ無視されます。ソース注釈は、基本的にコードのコメントと同じ目的を果たします。

于 2012-08-09T04:19:39.953 に答える
3

注釈付き要素は影響を受けません。

@Retentionメタアノテーションと呼ばれるものです。他のアノテーション インターフェイスにのみ適用されます。そのため、適用されている注釈にのみ 影響します。

たとえば、それ自体が で注釈され@Fooているという名前の注釈がある場合、(別の要素の) 注釈はコンパイラによって解析されますが、結果のファイルには格納されません(したがって、要素に注釈を付けると、否定的な答えが得られます)。@Retention(RetentionPolicy.SOURCE)@Foo.class@Foo

これは、純粋に文書化の目的でアノテーションを使用する場合、またはアノテーション処理で処理したい場合 (コンパイル ステップ中) に役立ちます。

于 2012-08-09T04:20:32.070 に答える
1

Java プログラミング言語では、注釈をソース コード内の特殊な形式の構文メタデータとして使用できます。クラス、メソッド、変数、パラメーター、およびパッケージに注釈を付けることができます。注釈は、コンパイラによって生成されたクラス ファイルに埋め込むことができ、Java 仮想マシンによって保持される可能性があるため、アプリケーションの実行時の動作に影響を与えます。

保持ポリシーは、注釈を破棄する必要がある時点を決定します。保持ポリシー RUNTIME のアノテーションは、実行時に JVM で使用できます。

于 2015-09-15T07:01:07.733 に答える