这是我认为的java纯粹主义者的一个.我最近遇到一个问题,一个方法来执行自定义的String值解析为布尔值.一个简单的任务,但由于某种原因,下面的方法是在null情况下抛出NullPointerException ...
static Boolean parseBoolean(String s)
{
return ("1".equals(s) ? true : ("0".equals(s) ? false : null));
}
Run Code Online (Sandbox Code Playgroud)
该方法的返回类型是布尔值,那么为什么或如何抛出NullPointerException?从调试开始,似乎异常被抛出到嵌套的内联条件语句求值为null并返回null到外部内联条件的点,但我再也无法解释原因.
最终我放弃并重写了如下方法,它按预期工作:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
if ("0".equals(s)) return false;
return null;
}
Run Code Online (Sandbox Code Playgroud)
以下代码介于两者之间,也可按预期工作:
static Boolean parseBoolean(String s)
{
if ("1".equals(s)) return true;
return "0".equals(s) ? false : null;
}
Run Code Online (Sandbox Code Playgroud)