是否有更好的做法将任何输入数字字符串(int、double 等)转换为 java 中各自的 Wrapper 对象/原始类型?
使用valueOf()
或parseXXX()
方法可以实现。但在选择适当的类型之前,我应该知道底层的字符串格式。
我正在做的是将数字字符串解析为 long,使用NumberUtils
from commons-lang.jar如下:
long longValue= (long) NumberUtils.toLong(numberString);
但问题是如果numberString
有一个double
值,则它无法解析为数字并将0.0
作为解析值返回。只有以下语句适用于双精度值:
Long longValue = (long) NumberUtils.toDouble(numberString);
有这样做的通用方法吗?我也不关心小数点后的数字。
谢谢阅读。
更新
@Thomas 建议,这对我来说看起来很优雅:
NumberFormat numberFormat = NumberFormat.getNumberInstance();
long longValue = numberFormat.parse(targetFieldValue).longValue();
当parse()
方法返回Long
或Double
包装对象时,可以对其进行检查并相应地分配以供通用使用。这里唯一要注意的是parse()
可能会抛出ParseException
,所以需要根据要求进行处理。
我用它来解决我的问题,但很想知道任何其他解决方案!