比較Java枚舉成員:==或equals()?我知道Java枚舉被編譯為具有私有構(gòu)造函數(shù)和一堆公共靜態(tài)成員的類。當(dāng)比較給定枚舉的兩個(gè)成員時(shí),我總是使用.equals(),例如public useEnums(SomeEnum a){
if(a.equals(SomeEnum.SOME_ENUM_VALUE))
{
...
}
...}但是,我剛剛遇到一些使用equals運(yùn)算符==而不是.equals()的代碼:public useEnums2(SomeEnum a){
if(a == SomeEnum.SOME_ENUM_VALUE)
{
...
}
...}我應(yīng)該使用哪個(gè)運(yùn)營(yíng)商?
3 回答

達(dá)令說(shuō)
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
兩者在技術(shù)上都是正確的。如果你查看源代碼.equals()
,它只是按照==
。
==
但是,我使用它,因?yàn)樗鼘⑹莕ull安全的。

至尊寶的傳說(shuō)
TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
使用==
比較兩個(gè)枚舉值的作品,因?yàn)橹挥幸粋€(gè)每個(gè)枚舉常量對(duì)象。
另外,==
如果您這樣編寫(xiě),則實(shí)際上不需要使用寫(xiě)入null安全代碼equals()
:
public useEnums(SomeEnum a){ if(SomeEnum.SOME_ENUM_VALUE.equals(a)) { ... } ...}
這是一種稱為“ 從左邊比較常數(shù)”的最佳實(shí)踐,你絕對(duì)應(yīng)該遵循。
添加回答
舉報(bào)
0/150
提交
取消