據說當輸入參數爲空時,compareTo()應該拋出一個NullPointerException異常。但是,我正在實現一個需要將字段與String類型進行比較的類。這些字段不一定是強制性的。我想知道在這種情況下,當參數字符串爲空時,int compareTo()會返回什麼?
1)當輸入爲空時應該返回什麼?任何非空字符串是否按字典順序大於或小於空?
和
2)如果這被認爲是不好的做法,有沒有什麼論據?我應該強制用戶使用空字符串嗎?如果使用空字符串,這不會混淆字段不適用的情況和字段爲空的情況嗎?如果必須拋出異常,那麼除了在手冊中警告用戶之外,還能做什麼?
編輯:我可能不會在這裏明確表達自己,但在我正在實施的程序中,可能爲空的字符串是所有字段或類,它們不應該爲空。換句話說,compareTo()使用的對象不能爲空,只能是它們的私有字段。所以在這種情況下,我相信如果我正確實現了compareTo(),它不會違反傳遞要求,因爲具有空字段的類將始終被視爲相同。我是對的還是我解釋這個錯誤?
謝謝大家的答案!
如何最好地實現它:http://stackoverflow.com/questions/481813/how-to-simplify-a-null-safe-compareto-implementation – 2015-06-02 12:33:27