我在使用以下语法时遇到一个奇怪的问题:
下面的代码块没有抛出空指针异常
Map<String, String> requestHeaderMap = FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap();
if(!"partial/ajax".equals(requestHeaderMap.get("faces-request")))
{
System.out.println("This works");
}
但是这个抛出空指针异常:
FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("faces-request").equals("partial/ajax")
我只是想不通这里出了什么问题。除了可读性之外,我看不出两个调用之间有任何区别。
最佳答案
FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("faces-request")
为空。您的版本之所以有效,是因为您将等号颠倒了,这两个操作归结为:
null.equals(object)
或
object.equals(null)
第一个抛出 NullPointerException
,第二个抛出错误。
关于java - 相等比较中的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564851/