0

我只是想知道为什么使用==检查HttpStatus.BAD_REQUEST的相等性不起作用:

HttpStatus httpStatusCode ...;
if (httpStatusCode == HttpStatus.BAD_REQUEST) {}

我通过使用equals方法让它工作:

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 ,而不是通过else if块,它去了else块。但是,当我将==更改为.equals()时,它起作用了。

我正在使用Spring Web 4.3.6.RELEASE。对此有什么解释吗?谢谢

4

1 回答 1

1

使用value()方法:

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

如果您查看HttpStatus.java文件内部,您可以看到它是一个enum并且它有一个返回 HttpStatus 的 int 值的 value 方法,因此您可以使用它来比较您的状态代码。并且 .equals 工作,因为它检查枚举值 == 检查参考。

于 2019-05-24T07:28:43.590 回答