我试图避免布尔值的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;
}
}
答案 0 :(得分:5)
if(Boolean.TRUE.equals(shareConnection.getConnection()))
NPE的唯一途径是
shareConnection
是null
getConnection()
使用调试器在此处分析您的程序状态和/或发布更多代码以获得更具体的帮助。
答案 1 :(得分:1)
这里有一些可读性问题也会让你的生活变得更加艰难。 1)比较两个布尔(不可否认的是一个包装和一个原始)
shareConnection.getConnection()
已经返回一个布尔值。 无需将此布尔值与Boolean.TRUE进行比较,并在if中使用此布尔值。 只需使用:
if(shareConnection.getConnection())
2)为你的方法命名
方法名称
getConnection()
让我相信,当我打电话给它时,我会得到(某种)连接。 相反,我得到真或假。 这就好像我问你要锤子一样,你说"是的"。
3)NullPointer异常 正如先前的答案已经指出的那样,NPE很可能是由
引起的shareConnection
确保在调用此对象上的方法之前初始化它。
答案 2 :(得分:0)
使用原始布尔值而不是布尔类,这样就不能为空。