平等问题在等于比较

cub*_*buk 2 java equals nullpointerexception

我对以下语法有一个奇怪的问题:

以下代码块不会抛出空指针异常

Map<String, String> requestHeaderMap = FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap();

if(!"partial/ajax".equals(requestHeaderMap.get("faces-request")))    
{
    System.out.println("This works");
}
Run Code Online (Sandbox Code Playgroud)

但是这个抛出空指针异常:

FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("faces-request").equals("partial/ajax")
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这里有什么不对.除了可读性之外,我没有看到两个电话之间有任何区别.

sha*_*kan 6

FacesContext.getCurrentInstance().getExternalContext().getRequestHeaderMap().get("faces-request")一片空白.你的版本是有效的,因为你有等于逆转,这两个操作归结为:

null.equals(object)
Run Code Online (Sandbox Code Playgroud)

要么

object.equals(null)
Run Code Online (Sandbox Code Playgroud)

第一个抛出a NullPointerException,第二个抛出虚假.