为了账号安全,请及时绑定邮箱和手机立即绑定

比较Java枚举成员:==或equals()?

比较Java枚举成员:==或equals()?

翻阅古今 2019-08-05 16:47:54
比较Java枚举成员:==或equals()?我知道Java枚举被编译为具有私有构造函数和一堆公共静态成员的类。当比较给定枚举的两个成员时,我总是使用.equals(),例如public useEnums(SomeEnum a){     if(a.equals(SomeEnum.SOME_ENUM_VALUE))     {         ...     }     ...}但是,我刚刚遇到一些使用equals运算符==而不是.equals()的代码:public useEnums2(SomeEnum a){     if(a == SomeEnum.SOME_ENUM_VALUE)     {         ...     }     ...}我应该使用哪个运营商?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

两者在技术上都是正确的。如果你查看源代码.equals(),它只是按照==

==但是,我使用它,因为它将是null安全的。


查看完整回答
反对 回复 2019-08-05
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

使用==比较两个枚举值的作品,因为只有一个每个枚举常量对象。

另外,==如果您这样编写,则实际上不需要使用写入null安全代码equals()

public useEnums(SomeEnum a){
    if(SomeEnum.SOME_ENUM_VALUE.equals(a))
    {
        ...
    }
    ...}

这是一种称为“ 从左边比较常数”的最佳实践,你绝对应该遵循。


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 1027 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信