Java 8 对HttpStatus.BAD_请求使用等号无效

Java 8 对HttpStatus.BAD_请求使用等号无效,java-8,resttemplate,bad-request,spring-web,http-status,Java 8,Resttemplate,Bad Request,Spring Web,Http Status,我只是想知道为什么使用=来检查HttpStatus的相等性。错误的请求不起作用: HttpStatus httpStatusCode ...; if (httpStatusCode == HttpStatus.BAD_REQUEST) {} 我通过使用equals方法使其工作: if (httpStatusCode.equals(HttpStatus.BAD_REQUEST)) {} httpStatusCode.value() == HttpStatus.OK.value() 但是,Ht

我只是想知道为什么使用=来检查HttpStatus的相等性。错误的请求不起作用:

HttpStatus httpStatusCode ...;
if (httpStatusCode == HttpStatus.BAD_REQUEST) {}
我通过使用equals方法使其工作:

if (httpStatusCode.equals(HttpStatus.BAD_REQUEST)) {}
httpStatusCode.value() == HttpStatus.OK.value()
但是,HttpStatus.OK的工作方式如下:

if (httpStatusCode == HttpStatus.OK) {}
我发现它时,我有这个代码:

if (httpStatusCode == HttpStatus.OK) {
...
} else if (httpStatusCode == HttpStatus.BAD_REQUEST ) {
...
} else {
...
}
假设httpStatusCodeHttpStatus.BAD_请求,而不是通过else if块,而是转到else块。但是,当我将==更改为.equals()时,它起了作用

我正在使用SpringWeb4.3.6.RELEASE。有什么解释吗?谢谢

使用value()方法:

if (httpStatusCode.equals(HttpStatus.BAD_REQUEST)) {}
httpStatusCode.value() == HttpStatus.OK.value()
如果查看
HttpStatus.java
文件,可以看到它是一个
enum
,它有一个返回HttpStatus的int值的value方法,因此可以使用它来比较状态代码。
And.equals在检查枚举值时起作用,就像==检查引用一样。

它不应该有任何区别,因为
HttpStatus
是一个枚举,应该只有一个实例,所以引用相等应该可以。我说过,使用==但是.equals()不起作用。