将 null 传递给 NumberUtils.createLong 函数抛出异常



我正在尝试使用NumberUtils.createLong函数将String转换为Long。

如文档中所述,如果我们传递空值,那么它将返回空值。但是,我得到了输入字符串"null"的数字格式异常。下面是我用来调用 createLong 函数的代码片段。

NumberUtils.createLong("null") and
NumberUtils.createLong(null)

请帮助我修复此异常。

谢谢。

文档说

如果字符串null则返回null

你不是null传递它,而是传递它"null"。那是完全不同的事情。

String s = "null";
System.out.println(s == null);   // false
System.out.println(s.length());  // 4
String t = null;
System.out.println(t == null);   // true
System.out.println(t.length());  // NullPointerException.

通过将字符串 null 括在双引号中来发送字符串 null。改为发送空值。

NumberUtils.createLong("null")

失败,因为"null"不像数字,就像"0"那样。

NumberUtils.createLong(null)

如果此操作失败,API 设计者希望您自行决定如何处理空值。这是一个很好的决定,因为关于空值的隐含假设往往会导致很多麻烦和难以找到错误。

做出自己的决定,例如:

final Long x;
if (numberAsString == null)
x = 0; // or null, although I'd see this as bad style.
else
x = NumberUtil.createLong(numberAsString);

此示例不处理numberAsString包含任何不类似于实际长整型值的文本的情况。

最新更新