入力パラメーターが null の場合、compareTo() は NullPointerException をスローする必要があると言われています。ただし、フィールドを String 型と比較する必要があるクラスを実装しています。これらのフィールドは必須ではありません。この場合気になるのは、
1) 入力が null の場合、何を返す必要がありますか? null 以外の文字列は辞書的に null より大きいか小さいか?
と
2) これが悪い習慣と見なされる場合、それを裏付ける議論はありますか? 代わりに空の文字列を使用するようユーザーに強制する必要がありますか? 空の文字列を使用すると、フィールドが適用されない場合とフィールドが空の場合が混同されませんか? また、例外をスローする必要がある場合は、マニュアルでユーザーに警告する以外に、他に何ができる/すべきでしょうか?
編集:ここでは明確に表現できないかもしれませんが、実装しているプログラムでは、null になる可能性のある文字列はすべてフィールドまたはクラスであり、null であってはなりません。つまり、comparedTo() が使用するオブジェクトを null にすることはできず、プライベート フィールドのみを null にすることができます。したがって、この場合、compareTo() を適切に実装すれば、null フィールドを持つクラスは常に同じと見なされるため、推移的な要件に違反しないと思います。私は正しいですか、それともこれを間違って解釈していますか?
答えてくれてありがとう!