我正在尝试使用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
包含任何不类似于实际长整型值的文本的情况。