这是我认为的 Java 纯粹主义者之一。我最近遇到了一个将字符串值自定义解析为布尔值的方法的问题。一个足够简单的任务,但由于某种原因,下面的方法在 null 情况下抛出 NullPointerException ......
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
该方法的返回类型是 Boolean 那么为什么或如何抛出 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;
}