Integer 类包含一些将 String 转换为 Integer 的方法:
Integer.parseInt(null);
参数:字符串返回:int,所以我希望当参数为null时抛出NPEInteger.valueOf(null);
参数:字符串返回:整数,所以我希望当参数为空时,这应该返回空。但是这个前提是错误的,我问为什么没有这样的方法可以处理这种情况?
Integer 类包含一些将 String 转换为 Integer 的方法:
Integer.parseInt(null);
参数:字符串返回:int,所以我希望当参数为null时抛出NPE
Integer.valueOf(null);
参数:字符串返回:整数,所以我希望当参数为空时,这应该返回空。但是这个前提是错误的,我问为什么没有这样的方法可以处理这种情况?
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)] // 它调用 Integer.parseInt(Str) 返回一个 Integer 实例。
public static Integer valueOf(String s) throws NumberFormatException
569 {
570 return new Integer(parseInt(s, 10));
571 }
Sun 中实现 Integer 的人(long
不久前 :))在编写该方法时可能没有考虑数据库。除非在处理数据库数据时,或者在极少数情况下您试图用 null 显式表示“未知”,否则 null 通常是出现严重错误的迹象。一般来说,一旦出现问题就提出异常是个好主意。(快速失败设计)
如果您曾经花时间在 C 中寻找一个分段错误,该错误是由于字符串值比您为其提供的内存长(然后覆盖了某些程序代码或其他数据),您将非常了解它有多糟糕当出现问题时不要失败。
自 Java 1.0 以来,Java 中与数据库的交互变得非常普遍,因此您建议应该有一种方法来处理这种情况可能是正确的。Integer 是最终类,因此如果您构建自己的 Integer 类,您将失去自动装箱,因此这可能确实需要通过 oracle 更改语言。
基本上,您观察到的是目前的情况,有人将不得不付钱给您以围绕它进行编码:)
我可能是错的,@hudi,但这就是你要找的吗?
public Integer valueOf2( String inputString ) {
return (inputString == null) ? null : Integer.parseInt(inputString);
}