Java的NumberFormat
是1)非线程安全的(可以使用ThreadLocal
解决);2) 对于最简单的用例,当我知道字符串应该包含int、long还是double,并且想要像这样的API时,很难正确使用
int parseInt(String str, Locale locale) throws ParseException;
int parseInt(String str, int defaultValue, Locale locale);
long parseLong(String str, Locale locale) throws ParseException;
long parseLong(String str, long defaultValue, Locale locale);
double parseDouble(String str, Locale locale) throws ParseException;
double parseDouble(String str, double defaultValue, Locale locale);
其中,当字符串未完全解析时抛出异常。显然,这样的包装器很容易写,但我在Guava或Apache Commons Lang中找不到。我错过了吗?或者有其他或多或少的标准解决方案吗?
我发现的一个选项是Apache Commons Validator(仍然是非线程安全的)。