我正在尝试将java bean中的双精度数组混洗,以便在JSP文件中使用。
在我的java bean的默认构造函数中,我有:
amounts = new double[] {0.5, 1, 1.5, 2, 2.5. 3, 3.5, 4};
Collections.shuffle(Arrays.asList(amounts));
我可以调用bean的方法,但由于某种原因,amount数组保持不变,所以它要么不是shuffling,要么默认构造函数没有执行。没有错误被抛出,所以我认为它可能是构造函数没有执行但我无法弄清楚原因。
在我的JSP中,我使用:
<jsp:useBean id="myBean" class="logic.logicBean" scope = "session" />
我想这样做,默认构造函数会执行,这是错误的吗?
答案 0 :(得分:10)
Arrays.asList(amounts)
期望T...
,其中T
是对象类型。这里的问题是您传递了double[]
,因此您的列表实际上是List<double[]>
- 而不是List<Double>
。其他答案不正确,因为Arrays.asList
保证“直写”到后备阵列。
见Arrays.asList
...
返回由指定数组支持的固定大小的列表。 (对返回列表的更改“直写”到数组。)
要证明这一点,请尝试将amounts
声明为Double[]
,并允许编译器自动装箱(同时确保更正文字的类型,即添加.0
或{{ 1}}后缀):
D
请注意,它现在可以正常运行: - )