在這個(gè)字符串 eclipse 中顯示“不匹配”的死代碼警告? String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";它甚至在編譯之前檢查字符串嗎?String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";如果我更改為 .equals 警告關(guān)閉。
2 回答

不負(fù)相思意
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
Eclipse 可能會(huì)分析您的代碼以檢測(cè)死代碼。
在這種特殊情況下,它顯示警告,因?yàn)檫@些值由于string interning而始終具有相同的標(biāo)識(shí),因此條件始終為真。Eclipse 檢測(cè)到這一點(diǎn)并發(fā)出警告。
如果使用equals
,則比較不再是常量表達(dá)式(JLS § 15.28),并且不再保證返回true
。因此警告消失了。
順便說一句,您應(yīng)該始終使用equals
來比較字符串。

catspeake
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";
在這里,Eclipse IDE 足夠聰明地找到死代碼。如果發(fā)現(xiàn)“If”條件始終為真,那么它將“else”部分警告為死代碼,因?yàn)樗肋h(yuǎn)不會(huì)被執(zhí)行。在此代碼段中,三元條件始終為真,因此顯示死代碼警告。
添加回答
舉報(bào)
0/150
提交
取消