フィールド上のJavaアノテーションの数に制限はありますか?その点についての情報は見つかりませんでした。
3 に答える
いいえ、仕様上の制限については何もありません。
ここを参照してください: http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf
一般に、Java ファイルで発生する唯一の制限は、max のような OS 全体の制限です。一部のファイルシステムのファイルサイズ、またはハードコアなケースではディスクサイズ。一部のシステムでは、100 GB の .java/.class ファイルをコンパイルまたは実行する際に問題が発生する可能性があります...
好きにしてください。それはおそらく悪いデザインだということです。経験則としては、10 以下にするのが良いと思います。
編集:結局のところ、制限があるようです。少なくともメソッドのランタイムアノテーションについては。
最大 65535 個のランタイム可視 Java プログラミング言語アノテーションをプログラム要素に直接添付できることに注意してください。
これがフィールドにも当てはまるかどうかはわかりません。
したがって、答えは、追加する注釈の種類によって異なると思います。
ただし、言語仕様ではそれについて何もありません。彼らは、誰かがそれを試すとは本当に思っていなかったと思います。
さて、ここにクラスファイル形式の仕様からの制限があります。
4.7.18. RuntimeVisibleParameterAnnotations 属性
RuntimeVisibleParameterAnnotations 属性は、method_info (§4.6) 構造体の属性テーブルの可変長属性です。RuntimeVisibleParameterAnnotations 属性は、対応するメソッドのパラメーターで実行時に表示される Java プログラミング言語の注釈を記録します。
最大65535 個のランタイム可視 Java プログラミング言語アノテーションをプログラム要素に直接添付できることに注意してください。
編集
上記のリンクでは、クラス、メソッド、および要素の RuntimeVisibleAnnotations および RuntimeInvisibleAnnotations についても言及されています。それぞれの制限は 65535 です。65535 は、構造体に含めることができる最大値 (符号なし 16 ビット整数) でもあります。長い間、他の制限に遭遇する可能性があります。その数に到達する前に。
制限は、あなたが持っている注釈の数よりも高い(一度しか追加できない)か、追加したいと思う可能性が高いと思います。
さらにデータを追加したい場合は、注釈の配列を注釈の値として評価できますが、文字列に豊富な情報を含めることは、たとえば JSON 形式で情報を追加する一般的な方法です。