2

JSPファイルで使用するためにJavaBeanのdoubleの配列をシャッフルしようとしています。

私のJavaBeanのデフォルトのコンストラクタには、次のものがあります。

amounts  = new double[] {0.5, 1, 1.5, 2, 2.5. 3, 3.5, 4};

Collections.shuffle(Arrays.asList(amounts));

Beanのメソッドを正常に呼び出すことはできますが、何らかの理由で、amounts配列は同じままであるため、シャッフルされていないか、デフォルトのコンストラクターが実行されていません。エラーはスローされないので、コンストラクターが実行されていない可能性があると思いますが、理由はわかりません。

私のJSPでは以下を使用します。

<jsp:useBean id="myBean" class="logic.logicBean" scope = "session" />

そうすることで、デフォルトのコンストラクターが実行されると思いましたが、これは間違っていますか?

4

1 に答える 1

10

Arrays.asList(amounts)を期待します。T...ここTで、 はオブジェクト タイプです。ここでの問題は、合格しているということです。double[]したがって、リストは実際にはそうではList<double[]>ありませんList<Double>Arrays.asListバッキング配列への「ライトスルー」が保証されているため、他の回答は正しくありません。

参照してくださいArrays.asList...

指定された配列に基づく固定サイズのリストを返します。(返されたリストへの変更は、配列に「ライト スルー」されます。)

それを証明するには、amounts代わりに as を宣言しDouble[]、コンパイラが autobox できるようにしてみてください (リテラルの型を修正することも確認してください。つまり、追加.0またはD接尾辞のいずれかです)。

amounts = new Double[] { 0.5, 1.0, 1.5, 2.0, 2.5, 3, 3.5, 4.0 };

正しく機能するようになりました:-)

于 2012-09-08T18:10:42.670 に答える