java - 相等比较中的奇怪问题

标签 java nullpointerexception equals

我在使用以下语法时遇到一个奇怪的问题:

下面的代码块没有抛出空指针异常

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/

相关文章:

java - 使用 Apache poi 在 Stacked bar 上方显示 SUM 值

java - PreparedStatement.setString() 方法不带引号

android - 如何纠正v4.DrawerLayout 中的NullPointerException?

java - 如何使用 equals 方法将对象添加到数组列表中以排除相似的对象?

Java System.getProperty( "user.timezone") 不起作用

java - Android Studio 未检测到更改

android - findViewById 在 <include>d View 内的 LinearLayout 上返回 null

android - Fragment 的 onResume() 中的 getview()

java - 为什么使用 null != anything 而不是 anything!=null?

Java用==比较两个字符串是错误的?