为什么 null 不等于 null?

Why null is not equal to null?

我不明白我的应用程序中发生了什么。我正在发送 PUT 请求,其中包含从 Angular 项目到 java api 的更新。我有一个验证来自放置请求的查询参数的方法,该方法如下所示:

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。为了测试它,我从 Angular 项目发送 null 作为 entityIri。我尝试将它们与 equal 方法和 == 进行比较,但在这两种情况下,输出始终为假。有人能解释一下为什么他们不平等吗?是因为我要将它传递给 JsonObject 吗? 我从调试中附加了一个 screenshot(我删除了不相关的部分)。

尝试使用isJsonNull方法:

provides check for verifying if this element represents a null value or not.

if (bodyObj.get("entityIri").isJsonNull()) {
    ...
}

当然,你需要检查之前是否bodyObj.get("entityIri")不是null。我没有添加它的声明以使声明清楚。