Integer类包含一些方法来字符串转换成整数:为什么整数不能解决空字符串
Integer.parseInt(null);
参数:字符串返回:整型,所以我预计,当参数为null,该抛NPEInteger.valueOf(null);
参数:字符串返回:整型,所以我期望当参数为null时,它应该返回null。但是这个先决条件是错误的,我问为什么没有这样的方法可以处理这种情况?
Integer类包含一些方法来字符串转换成整数:为什么整数不能解决空字符串
Integer.parseInt(null);
参数:字符串返回:整型,所以我预计,当参数为null,该抛NPE
Integer.valueOf(null);
参数:字符串返回:整型,所以我期望当参数为null时,它应该返回null。但是这个先决条件是错误的,我问为什么没有这样的方法可以处理这种情况?
在太阳谁实施整型(一long
很久以前:))时,他们写道,方法可能是没有想到的数据库中的人。除了在处理数据库数据时,或者极少数情况下,您试图用null显式表示“unknown”时,null通常表示某些事情已经发生了严重错误。总的来说,一旦出现问题,立即提出例外是个好主意。 (a Fail fast设计)
如果您曾经花时间在C中查找由于字符串值超过您为其提供的内存(然后重写了某些程序代码或其他数据)的分段错误,您将对于出现问题时不失败是多么糟糕有非常好的评价。
从Java 1.0开始,Java与数据库的交互变得非常普遍,所以你可能会建议应该有一种方法来处理这个问题。整数是一个最终的类,所以如果你像类一样构建你自己的整型,你将失去自动装箱,所以这可能确实需要oracle改变语言。
基本上,你观察到的是,现在是路,有人将不得不支付你周围代码:)
null
不是整数的有效表示。 Integer.parseInt()
要求解析的字符串是整型数字的整数表示。
public static int parseInt(String s, int radix)
440 throws NumberFormatException
441 {
442 if (s == null) {
443 throw new NumberFormatException("null");
444 }
Integer.valueOf(str)] //哪个inviokes的Integer.parseInt(STR)返回整数实例。
public static Integer valueOf(String s) throws NumberFormatException
569 {
570 return new Integer(parseInt(s, 10));
571 }
我可能是错的,@ hudi,但这是你在找什么?
public Integer valueOf2(String inputString) {
return (inputString == null) ? null : Integer.parseInt(inputString);
}
是啊我在评论中写这个,但我的问题是为什么Integer类中没有这样的方法? – hudi 2013-02-27 15:36:02
@hudi,这个怎么样?
我从来没有使用过它,但它看起来像如果有一个转换错误,您可以指定一个默认值。我知道,为了这个,在项目中加入另一个jar是一件很痛苦的事情;如果有标准的话会很好。
Javadoc说:“NumberFormatException - 如果字符串不包含可分析的整数”。这是你得到的? – 2013-02-27 15:26:38
这不是您通常需要依赖的行为(对null参数返回null),所以它通常不是问题。如果您确实需要依赖它,只需创建一个包装它并以所需方式处理null的实用程序方法? – berry120 2013-02-27 15:26:44
@EdwinDalorzo nope。我的问题是为什么有一些可以用空字符串处理的新方法。如果(value == null)返回null else retun valueOf(value),那么创建如此困难? – hudi 2013-02-27 15:29:32