发布日期:2018-03-26
比较Java中的枚举值时,是需要使用“==”还是“equals()”?+ 查看更多
比较Java中的枚举值时,是需要使用“==”还是“equals()”?
+ 查看更多
发布日期:2018-03-10 13:58
分类:JAVA
浏览次数:172
我知道Java中的枚举被编译为带有私有构造函数和一堆公有的静态成员的类。当比较给定的枚举中的两个成员时,我总是使用.equals(),例如:
public useEnums(SomeEnum a) { if(a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } ... }
但是,我刚刚在代码中遇到使用等号操作符“==”代替了.equals()的情况:
public useEnums2(SomeEnum a) { if(a == SomeEnum.SOME_ENUM_VALUE) { ... } ... }
我应该使用哪一种操作呢?
回答
专业来说,这两种方法都是正确的。如果你看看.equals()的源代码,它只是顺从于“==”。我使用“==”,但是,使用==是有一点不安全的。