ホームページ > Java > &#&チュートリアル > Java のアノテーション パラメータは文字列または配列定数で初期化できますか?

Java のアノテーション パラメータは文字列または配列定数で初期化できますか?

Susan Sarandon
リリース: 2024-11-28 07:10:12
オリジナル
748 人が閲覧しました

Can Annotation Parameters in Java Be Initialized with String or Array Constants?

文字列定数を使用したアノテーション パラメータの初期化

問題:

Java では、文字列を使用してアノテーション パラメータを初期化できますか定数または配列定数?注釈パラメータはコンパイル時に評価されるため、この機能が妨げられる可能性があります。

必要な構文の例は次のとおりです。

@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
   ....
}
ログイン後にコピー

ここで、FieldValues は定数配列を持つインターフェイスです。 FIELD1.

答え:

Java 言語仕様 15.28 によれば、コンパイル時定数はプリミティブと文字列のみとなります。これは、配列定数を使用してアノテーション パラメータを初期化することはできないことを意味します。

説明:

アノテーションはコンパイル時に評価され、アノテーションが保持する値はその時に分かるはずだ。配列の要素は実行時に変更される可能性があるため、配列はコンパイル時の定数ではありません。したがって、配列定数をアノテーション パラメーターとして使用することはできません。

考えられる解決策:

  • 固定配列を使用します: 配列値をアノテーション パラメータで直接定義し、配列値が常に一定であることを確認します。 Program.
  • ラッパー クラスを使用する: 非最終配列をカプセル化し、その要素への定数アクセスを提供するラッパー クラスを作成します。
  • プリプロセッサを使用するtools: 注釈や注釈プロセッサなどのプリプロセッサ ツールを使用して、実行中に必要な定数を生成します。

注:

配列が Final として定義されている場合でも、それはコンパイル時の定数ではなく、その要素はリフレクティブに変更される可能性があります。 .

以上がJava のアノテーション パラメータは文字列または配列定数で初期化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート