这是我认为的java纯粹主义者之一。我最近有一个方法来执行String值的自定义分析到布尔值的问题。一个很简单的任务,但由于某些原因如下方法是空的情况下抛出一个NullPointerException ...布尔型的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;
}
+1对于一个不错的“益智游戏” – NilsH 2013-04-26 10:35:34
@NilsH感谢+1和解决方案! – Robin 2014-01-27 11:25:35