Ce qui devrait int compareTo() de retour lorsque la chaîne de paramètre est null?

Il est dit que lorsque le paramètre d'entrée est nulle, compareTo() doit lancer une exception NullPointerException. Cependant, je suis l'implémentation d'une classe qui a besoin de comparer les champs avec le type de Chaîne. Ces champs doivent pas être obligatoire. Je me demande dans ce cas,

1) Que dois-je retourner lorsque l'entrée est nulle? Toute non-null chaînes lexicographiquement plus grand ou plus petit que la valeur null?

et

2) Si cela est considéré comme une mauvaise pratique, est-il un des arguments à l'appui? Dois-je forcer l'utilisateur à utiliser les cordes à vide à la place? Si vous utilisez une chaîne vide, ne pas qui confondent le cas où le champ n'est pas applicable et dans le cas où le champ est vide? Et si une exception doit être levée, ensuite, à l'exception de l'avertissement de l'utilisateur dans le manuel, qu'aurait-elle/doit-je faire?

EDIT: je ne pourrais pas m'exprimer clairement ici, mais dans le programme que je suis en œuvre, les chaînes de caractères qui peut être null, sont autant de domaines ou d'une classe, qui ne doit pas être null. En d'autres termes, les objets comparedTo() utilise ne pouvait pas être null, juste de leur privés dans les domaines de l'. Donc dans ce cas, je crois que si j'en œuvre compareTo() correctement, il ne viole pas la transitif exigence étant donné que les classes avec des champs null pourrait être considéré comme le même toujours. Suis-je le droit ou suis-je interpréter ce mal?

Merci à vous tous pour les réponses!

La meilleure manière d'implémenter ça: stackoverflow.com/questions/481813/...

OriginalL'auteur Ziyao Wei | 2011-06-06