为什么 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
。我没有添加它的声明以使声明清楚。
我不明白我的应用程序中发生了什么。我正在发送 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
。我没有添加它的声明以使声明清楚。