0

Java で 2D double 配列を初期化しようとしています。この double 配列には 1000 行と 50 列があります。

私がそれをしたとき、私はこのエラーを得ました:

 Too many constants, the constant pool for ClassName would exceed to 65536 entries.

以下は私の作品の一部です。

   double[][] haltonArray = {{0.116538, -1.08275, -0.832512, 1.9746, 1.68741, 2.23391, 
          0.703111, -0.400975, -1.8214, -2.22141, 0.127014, -1.31939, 
          0.874426, 0.0916673, 0.236509, 0.731912, 1.43766, 0.88484, 
          1.13653, -0.882871, -0.212072, -0.431315, -1.21639, -0.0352919, 
          0.334481, 0.891777, -0.178983, 0.531624, -0.360295, 0.551329, 
          0.696159, -0.595714, 0.27043, -0.262656, -0.176079, -0.667502, 
          0.66105, -0.593195, 2.10675, 
          0.168339, -0.918746, -1.59296, -0.0584028, -0.336773, -1.0043, 
        -1.59346, -0.041084, 1.93094, 0.896973,0.637633}, 
        {-0.534821, -0.0682488, -0.246726, -1.08433, -1.61264, 
        -1.47508, 0.907127, -0.261507, -1.42036, -1.66814, 0.209045,      -1.17226,
           0.967877, 0.150398, 0.291741, 0.795219, 1.56906, 0.947359, 
          1.21103, -0.831883, -0.177076, -0.396745, -1.15539, -0.00712026, 
          0.361938, 0.929345, -0.154306, 0.558805, -0.335862, 0.577341, 
          0.721534, -0.573016, 0.289458, -0.244034, -0.159018, -0.6469, 
          0.681047, -0.574957, 2.27073, 
          0.183053, -0.897595, -1.54553, -0.0452613, -0.323059, -0.983445, 
        -1.55014, -0.0291968, 2.00915, 0.913608, 0.651105}, {0.828784, ... }};

何か提案はありますか?

4

1 に答える 1

0

定数プールでは最大 65536 エントリが許可されるため、制限を超えることはできません

定数プール テーブルは、ほとんどのリテラル定数値が格納される場所です。これには、あらゆる種類の数値、文字列、識別子名、クラスとメソッドへの参照、型記述子などの値が含まれます。定数プール テーブル内の特定の定数へのすべてのインデックスまたは参照は、16 ビット (u2 型) の数値で指定されます。インデックス値 1 は、テーブル内の最初の定数を参照します (インデックス値 0 は無効です)。

ファイル形式の開発中に行われた歴史的な選択により、定数プール テーブル内の定数の数は、テーブルに先行する定数プールの数と実際には同じではありません。まず、テーブルは (0 ではなく) 1 から始まるインデックスが作成されるため、カウントは実際には最大インデックスとして解釈されます。さらに、2 種類の定数 (long と double) は、テーブル内の 2 つの連続したスロットを使用しますが、2 番目のそのようなスロットは、直接使用されることのないファントム インデックスです。

定数プール内の各項目 (定数) の型は、最初のバイト タグによって識別されます。このタグに続くバイト数とその解釈は、タグ値に依存します。

詳細については、こちらをご覧ください

于 2013-04-23T10:40:06.960 に答える