Java 为什么null不等于null?
我不明白我的申请中发生了什么。我正在发送PUT请求,其中包含从Angular项目到JavaAPI的更新。我有一个从put请求验证查询参数的方法,该方法如下所示: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
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()) {
...
}