3 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
這個(gè)問題沒有萬(wàn)無一失的答案,因?yàn)樗Q于程序的需求以及它應(yīng)該如何回答這種特殊情況。說到這里,我會(huì)說:
如果有一個(gè) null 是程序員的錯(cuò)誤(我的意思是你永遠(yuǎn)不會(huì)期望在你的算法中發(fā)生的事情)我建議離開 .equals 方法,因?yàn)闀?huì)出現(xiàn)空指針異常并讓你注意到這個(gè)問題,我的意思是,一個(gè)程序員的錯(cuò)誤(那些我們不想要的錯(cuò)誤!,這意味著我們寫了一個(gè)糟糕的算法),你應(yīng)該感謝應(yīng)用程序報(bào)告它(而不是一個(gè)憤怒的真實(shí)客戶......)
但是,如果另一方面您的應(yīng)用程序也可以正常工作,而不是將其視為程序錯(cuò)誤,那么使用 Object.equals 將更適合您的需求。
一般的智慧建議異常應(yīng)該至少被記錄下來。
希望能幫助到你!
TD;DR;
嘗試調(diào)查不同類型的異常。并非所有例外都是程序員錯(cuò)誤。
在 java 中,通常,檢查異常是針對(duì)所有您可以預(yù)期的事件,您可以編寫應(yīng)該能夠處理的代碼。而unchecked異常(那些所屬的RuntimeException的家庭)的事件,你只是無法預(yù)料(如空指針異常),因此它是IMPOSIBLE來編寫代碼來處理事情,你不要指望(相反,你應(yīng)該糾正已經(jīng)存在的代碼,不要寫新的?。?/p>

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您想允許空值,這是一種合適的方法。否則,您只需添加對(duì)空值的檢查并適當(dāng)處理它們。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
取決于您的代碼以及“無處不在”的含義。如果您的代碼當(dāng)前假定(可能不是明確的,但只是因?yàn)榭蛰斎胗肋h(yuǎn)不會(huì)傳播到equals
調(diào)用之外)空輸入將導(dǎo)致 NPE,那么切換到Objects.equals
將引入一個(gè)錯(cuò)誤。
添加回答
舉報(bào)