小编Rob*_*bin的帖子

布尔值的NullPointerException

这是我认为的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)

java boolean nullpointerexception

15
推荐指数
2
解决办法
8061
查看次数

标签 统计

boolean ×1

java ×1

nullpointerexception ×1