使用HttpStatus.BAD_REQUEST的等号不起作用

时间:2017-08-31 07:20:39

标签: java-8 resttemplate bad-request spring-web http-status

我只是想知道为什么使用 == 检查 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 。对此有什么解释吗?谢谢

1 个答案:

答案 0 :(得分:1)

使用 value()方法:

httpStatusCode.value() == HttpStatus.OK.value()

如果您查看HttpStatus.java文件的内部,则可以看到它是一个enum,并且它具有一个value方法,该方法返回HttpStatus的int值,因此您可以使用它来比较您的状态码。 .equals可以像检查==检查引用那样检查枚举值。