Java 为什么null不等于null?

Java 为什么null不等于null?,java,json,equals,Java,Json,Equals,我不明白我的申请中发生了什么。我正在发送PUT请求,其中包含从Angular项目到JavaAPI的更新。我有一个从put请求验证查询参数的方法,该方法如下所示: private JsonObject validateRequestBody(JsonElement requestBody) { if (!(requestBody instanceof JsonObject)) { throw new IllegalArgumentException("Request bod

我不明白我的申请中发生了什么。我正在发送PUT请求,其中包含从Angular项目到JavaAPI的更新。我有一个从put请求验证查询参数的方法,该方法如下所示:

private JsonObject validateRequestBody(JsonElement requestBody) {
    if (!(requestBody instanceof JsonObject)) {
        throw new IllegalArgumentException("Request body cannot be case to JSON object");
    }
    JsonObject bodyObj = requestBody.getAsJsonObject();
    System.out.println(bodyObj.get("entityIri").equals(null));
    if (bodyObj.get("entityIri") == null) {
        System.out.println("null");
        throw new IllegalArgumentException("Request body must contain entity IRI");
    }
    return bodyObj;
}
如您所见,我只是想检查
enityIri
参数是否等于null。为了测试它,Im从Angular project以
entityIri
的形式发送
null
。我试图用
equal
方法和
=
方法对它们进行比较,但在这两种情况下,输出总是错误的。有人能解释一下为什么他们不平等吗?是因为我正在将它传递给
JsonObject
? 我从调试中附加了一个附件(我删除了不相关的部分)。

尝试使用以下方法:

提供检查以验证此元素是否表示空值 或者不是


当然,您需要检查
bodyObj.get(“entityIri”)
之前是否不是
null
。我添加it声明并不是为了让声明更清晰。

这是否回答了您的问题
bodyObj.get()
将返回
JsonObject
的实例,并且它不是
null
,您可以调用
getAsString()
或任何执行此类验证的方法。我尝试将
bodyObj.get(“entityIri”)
“null”
进行比较,但它也是false。除此之外,在屏幕截图中还可以看到,在调试过程中,
bodyObj.get(“entityIri”)
的值为null,而不是字符串,因为它没有引号,如果
entityIri
丢失,当然会抛出
NullPointerException
。@Andreas,我只是想弄清楚如何使用它。但是,当然,你是对的。我添加了额外的注释,指出检查
null
是个好主意。
if (bodyObj.get("entityIri").isJsonNull()) {
    ...
}