避免布尔值出现 NullPointerException

问题描述 投票:0回答:3

我试图避免布尔值出现 NullPointerException。我认为下面的代码可以工作,但事实并非如此。

if(Boolean.TRUE.equals(shareConnection.getConnection())){ // This could be null, True or False

}

有什么想法吗?我不想实现

try catch
语句,因为这已经在 catch 中了。

编辑

public class ShareConnection{

    public boolean getConnection() {
        return connection;
    }
}
java android exception nullpointerexception
3个回答
7
投票
if(Boolean.TRUE.equals(shareConnection.getConnection()))

这里NPE唯一的方法是:

  • shareConnection
    null

使用调试器来分析您的程序状态。


1
投票

这里存在一些可读性问题,也会让你的生活变得更加困难。 1)比较两个布尔值(诚然,一个包装器和一个原语)

shareConnection.getConnection()

已经返回一个布尔值。 无需将此布尔值与 Boolean.TRUE 进行比较并在 if 中使用它。 只需使用:

if(shareConnection.getConnection())

2)为你的方法命名

方法名称

getConnection()

让我相信,当我调用它时,我会得到(某种)联系。 相反,我得到的是真还是假。 这就好像我向你要锤子,你说“是”。

3) 空指针异常 正如前面的答案已经指出的,NPE 很可能是由

引起的
shareConnection

确保在调用该对象的方法之前已对其进行初始化。


0
投票

使用原始布尔值而不是布尔类,这样它就不能为空。

© www.soinside.com 2019 - 2024. All rights reserved.