检查null Boolean是否为true导致异常 [英] Check if null Boolean is true results in exception

查看:1558
本文介绍了检查null Boolean是否为true导致异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码:

Boolean bool = null;

try 
{
    if (bool)
    {
        //DoSomething
    }                   
} 
catch (Exception e) 
{
    System.out.println(e.getMessage());             
}

为什么我检查布尔变量bool会导致异常?
当它看到它不是真的时,它不应该跳过if语句吗?
当我删除if语句或检查它是否为null时,异常消失。

Why does my check up on the Boolean variable "bool" result in an exception? Shouldn't it just jump right past the if statement when it "sees" that it isn't true? When I remove the if statement or check up on if it's NOT null, the exception goes away.

推荐答案

当你有一个 boolean 时,它可以是 true false 。然而,当你有一个 Boolean 时,它可以是 Boolean.TRUE Boolean.FALSE null 与任何其他对象一样。

When you have a boolean it can be either true or false. Yet when you have a Boolean it can be either Boolean.TRUE, Boolean.FALSE or null as any other object.

在您的特定情况下,您的 Boolean null if 语句触发隐式转换为 boolean 产生 NullPointerException 。您可能需要:

In your particular case, your Boolean is null and the if statement triggers an implicit conversion to boolean that produces the NullPointerException. You may need instead:

if(bool != null && bool) { ... }

这篇关于检查null Boolean是否为true导致异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆