[解決済み] 定数からアノテーションに値を供給する方法 java
2022-04-23 03:21:35
質問
アノテーションとそのパラメータはコンパイル時に解決されるため、Javaではこのようなことはできないのではないかと考えています。以下のようなインターフェースを持っています。
public interface FieldValues {
String[] FIELD1 = new String[]{"value1", "value2"};
}
という別のクラスがあります。
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
....
}
私は多くのクラスをアノテーションでマークしていますが、すべてのアノテーションで文字列を指定することを避けられるかどうかを知りたいのです。
@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
....
}
しかし、これはアノテーションの値が配列のイニシャライザであるべきであるなどのコンパイルエラーを出します。String定数やString[]定数を使用してアノテーションに値を与える方法をご存知の方はいらっしゃいますか?
どのように解決するのですか?
コンパイル定数 はプリミティブと文字列のみです。 :
15.28. 定数式
コンパイル時の 定数式 は、プリミティブ型の値や文字列を表す式で、突然完結せず、次のものだけを用いて構成されるものです。
- プリミティブ型のリテラルと
String
- プリミティブ型へのキャストと型へのキャスト
String
- 演算子 [...]演算子 [...]演算子
- 定数表現を含む括弧付き表現。
- 定数変数を参照する単純な名前。
- 形式の修飾名 タイプ名 . 識別子 定数変数を参照するものである。
実はjavaでは配列の中の項目を保護する方法はありません。実行時に誰かが常に
FieldValues.FIELD1[0]="value3"
したがって、配列は深く見れば本当に一定であるはずがないのです。
関連
-
java の例外が発生しました java
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Javaで文字列値からenum値を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
final, finally, finalizeの違いについて話してください。
-
Javaクラスローダーにソースコードから潜り込む
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み】Javaのアノテーションメンバーに使用できる型はどれですか?