【发布时间】:2019-07-07 10:12:51
【问题描述】:
如何将一组数字字符串解析为通用数组?我的整个问题可以归结为以下几点:
static <T extends Number> T[] parseBulk(String bulk, Class<T> type) throws ParseException {
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setParseIntegerOnly(false);
String[] elements = bulk.split(";");
T[] result = (T[])Array.newInstance(type, elements.length);
for (int i= 0; i< elements.length; i++)
result[i] = (T)numberFormat.parse(itemElements[i]); // here it crashes
// result[i] = type.cast(numberFormat.parseObject(itemElements[i])); // does not work either
return result;
}
...
Double[] shouldBeDoubles = parseBulk("15.5;10", Double.class);
看起来 Number 是通过给定 String 的内容来确定结果类型的,这会产生一个 Double 代表“15.5”,一个 Long 代表“10”。
然后它在尝试将 Long 转换为 T(即 Double)时很高兴地崩溃了。
谢谢,
更新:在源代码中添加了 numberFormat。对不起:)
【问题讨论】:
-
numberFormat有什么类型?