[解決済み】Javaのアノテーションメンバーに使用できる型はどれですか?
2022-04-19 13:59:24
質問
今日、私は最初のアノテーション・インターフェイスを次のように作成したいと思いました。 このドキュメント というコンパイラーエラーが発生しました。
Invalid type for annotation member": public @interface MyAnnotation { Object myParameter; ^^^^^^ }
明らかに
Object
は、アノテーションメンバーの型として使用できません。残念ながら、一般的にどのような型が使用できるのかについての情報は見つかりませんでした。
これは試行錯誤の末に見つけたものです。
-
String
→ 有効 -
int
→ 有効 -
Integer
→ 無効(意外と知られていない) -
String[]
→ 有効(意外と知られていない) -
Object
→ 無効
どなたか、どの型が実際に許可されているのか、またその理由を教えてください。
解決方法は?
で指定されています。 JLS 9.6.1項 . アノテーションメンバータイプは、以下のいずれかでなければならない。
- プリミティブ
- 文字列
- Enum
- 別のアノテーション
- クラス
- 上記のいずれかの配列
制約が多いように見えますが、理由があるのは間違いないでしょう。
また、多次元配列(例えば
String[][]
は、上記のルールで暗黙のうちに禁止されています。
で説明されているように、Classの配列は許可されません。 この回答 .
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] JavaでMD5ハッシュを生成するにはどうすればよいですか?
-
[解決済み] Javaで現在のスタックトレースを取得するにはどうすればよいですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] 定数からアノテーションに値を供給する方法 java