我只是想知道为什么使用 == 检查 HttpStatus.BAD_REQUEST 的相等性是不行的:
HttpStatus httpStatusCode ...;
if (httpStatusCode == HttpStatus.BAD_REQUEST) {}
我使用等于方法开始工作:
if (httpStatusCode.equals(HttpStatus.BAD_REQUEST)) {}
但是, HttpStatus.OK 正如:
if (httpStatusCode == HttpStatus.OK) {}
我在使用此代码时发现了它:
if (httpStatusCode == HttpStatus.OK) {
...
} else if (httpStatusCode == HttpStatus.BAD_REQUEST ) {
...
} else {
...
}
假设 httpStatusCode 是 HttpStatus.BAD_REQUEST ,而不是通过其他阻止,它转到其他块。但是,当我将 == 更改为 .equals()时,它就可以了。
我正在使用 Spring Web 4.3.6.RELEASE 。对此有什么解释吗?谢谢
答案 0 :(得分:1)
使用 value()方法:
httpStatusCode.value() == HttpStatus.OK.value()
如果您查看HttpStatus.java
文件的内部,则可以看到它是一个enum
,并且它具有一个value方法,该方法返回HttpStatus的int值,因此您可以使用它来比较您的状态码。
.equals可以像检查==检查引用那样检查枚举值。