NullPointerException from Boolean
2022-09-03 01:28:31
我认为这是Java纯粹主义者的一个。我最近遇到了一个问题,该方法可以执行字符串值到布尔值的自定义解析。一个足够简单的任务,但由于某种原因,下面的方法是在空情况下抛出一个NullPointerException...
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
该方法的返回类型是布尔值,那么为什么或如何抛出 NullPointerException?从调试到它,似乎在嵌套的行内条件语句计算结果为null并向外部行内条件语句返回null的位置引发异常,但我再次无法解释原因。
最终,我放弃了并按如下方式重写了该方法,该方法按预期工作:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
以下代码介于两者之间,并且也按预期工作:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}