比较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)
    {
        ...
    }
    ...
}

哪个运营商是我应该使用的?

回答:

两者在技术上是正确的。如果您查看.equals()的源代码,则只会延迟到==
我使用==,因为这将是无效的。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Comparing Java enum members: == or equals()?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

74 − 70 =