我试图避免布尔值出现 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;
}
}
if(Boolean.TRUE.equals(shareConnection.getConnection()))
这里NPE唯一的方法是:
shareConnection
是 null
使用调试器来分析您的程序状态。
这里存在一些可读性问题,也会让你的生活变得更加困难。 1)比较两个布尔值(诚然,一个包装器和一个原语)
shareConnection.getConnection()
已经返回一个布尔值。 无需将此布尔值与 Boolean.TRUE 进行比较并在 if 中使用它。 只需使用:
if(shareConnection.getConnection())
2)为你的方法命名
方法名称
getConnection()
让我相信,当我调用它时,我会得到(某种)联系。 相反,我得到的是真还是假。 这就好像我向你要锤子,你说“是”。
3) 空指针异常 正如前面的答案已经指出的,NPE 很可能是由
引起的shareConnection
确保在调用该对象的方法之前已对其进行初始化。
使用原始布尔值而不是布尔类,这样它就不能为空。