将null传递给NumberUtils.createLong函数引发异常

时间:2020-01-21 14:11:20

标签: java string long-integer

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

Doc中所述,如果我们传递null值,则它将返回null。但是,但是我得到输入字符串“ null”的NumberFormatException。下面是我用来调用createLong函数的代码段。

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

请帮助我修复此异常。

谢谢。

3 个答案:

答案 0 :(得分:2)

文档说

如果字符串为{ field: "Amount", title: "Amount", format: "{0:c}", width: 50 }, ,则返回null

您没有通过null,而是通过了null。那是完全不同的事情。

"null"

答案 1 :(得分:0)

您通过将字符串null括在双引号中来发送它。而是发送null。

答案 2 :(得分:0)

NumberUtils.createLong("null")

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

NumberUtils.createLong(null)

如果失败,则API设计人员希望您自行决定如何处理空值。这是一个很好的决定,因为对null值的隐式假设会引起很多麻烦,并且很难发现错误。

做出自己的决定,例如:

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

此示例不适用于numberAsString包含任何与实际long值不相似的文本的情况。