在执行下面的代码时,我会得到以下错误.
我试图使用列表集合的BigDecimal ()方法将对象数组的列表转换为一个toArray数组。
当我简单地给出fileFormatObj.toArray()时,它工作得很好,但是当我给出如下代码时,我得到的是错误.。
public static void main(String[] args)
{
List<BigDecimal> objList = new ArrayList<BigDecimal>();
List<Object[]> fileFormatObj = new ArrayList<Object[]>();
final Object[] array1 = new Object[1];
array1[0] = new BigDecimal(BigInteger.ONE);
fileFormatObj.add(array1);
if (fileFormatObj != null)
{
//Error here java.lang.System.arraycopy
final BigDecimal[] arr = fileFormatObj
.toArray(new BigDecimal[fileFormatObj.size()]);
objList.addAll(Arrays.asList(arr));
for (final BigDecimal object : arr) {
System.out.println("TEST-->" + object.intValue());
}
}
}发布于 2014-01-27 07:35:14
问题是fileFormatObj中的元素是Object[],而不是BigDecimal。因此,不能将fileFormatObj转换为BigDecimal[]。您甚至不能将其转换为BigDecimal[][] (因为Object[]不是BigDecimal[]),但目前您正试图将数组引用存储在BigDecimal[]中。
还不清楚你为什么要这样做,但这根本行不通。如果你编辑你的问题来解释你为什么要这么做--大的是什么--我们可以帮你更多的忙。
如果您绝对必须将一个List<Object[]>转换为一个BigDecimal[],并且您希望获取每个数组的第一个元素,那么您可以使用如下所示:
BigDecimal[] arr = new BigDecimal[fileFormatObj.size()];
for (int i = 0; i < arr.length; i++) {
Object[] fileFormatArray = fileFormatObj.get(i);
Object firstElement = fileFormatArray[0];
arr[i] = (BigDecimal) firstElement;
}当然,您可以在一条语句中完成整个for循环体--我只是在这里拆分它,以明确向BigDecimal转换的确切位置。
https://stackoverflow.com/questions/21375212
复制相似问题