比较Java枚举成员:==或equals()? [英] Comparing Java enum members: == or equals()?
本文介绍了比较Java枚举成员:==或equals()?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
.equals()
,例如 public useEnums(SomeEnum a)
{
if(a.equals(SomeEnum.SOME_ENUM_VALUE))
{
...
}
...
}
然而,我刚刚遇到来的代码使用equals运算符 ==
代替:
public useEnums2(SomeEnum a )
{
if(a == SomeEnum.SOME_ENUM_VALUE)
{
...
}
...
}
哪个运营商是我应该使用的运营商?
解决方案
两者在技术上都是正确的。如果您查看 .equals()
的源代码,则只会拖到 ==
。
我使用 ==
,因为这将是无效的。
I know that Java enums are compiled to classes with private constructors and a bunch of public static members. When comparing two members of a given enum, I've always used .equals()
, e.g.
public useEnums(SomeEnum a)
{
if(a.equals(SomeEnum.SOME_ENUM_VALUE))
{
...
}
...
}
However, I just came across come code that uses the equals operator ==
instead:
public useEnums2(SomeEnum a)
{
if(a == SomeEnum.SOME_ENUM_VALUE)
{
...
}
...
}
Which operator is the one I should be using?
解决方案
Both are technically correct. If you look at the source code for .equals()
, it simply defers to ==
.
I use ==
, however, as that will be null safe.
这篇关于比较Java枚举成员:==或equals()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文