Что должен возвращать int compareTo (), если строка параметра равна нулю?

Говорят, что когда входной параметр равен нулю, compareTo () должен генерировать исключение NullPointerException. Однако я реализую класс, который должен сравнивать поля с типом String. Эти поля не обязательно должны быть обязательными. Интересно, в этом случае

1) Что мне возвращать, когда ввод нулевой? Должны ли какие-либо ненулевые строки лексикографически больше или меньше нуля?

и

2) Если это считается плохой практикой, есть ли какие-либо поддерживающие аргументы? Должен ли я заставить пользователя использовать вместо этого пустые строки? Если вы используете пустую строку, не запутает ли это случай, когда поле неприменимо, и случай, когда поле пусто? И если должно быть сгенерировано исключение, то, кроме предупреждения пользователя в руководстве, что еще я мог / должен сделать?

РЕДАКТИРОВАТЬ: Я могу не выражаться четко здесь, но в программе, которую я реализую, строки, которые могут быть нулевым - все поля или класс, который не должен быть нулевым. Другими словами, объекты, которые использует compareTo (), не могут быть нулевыми, могут быть только их частные поля. Итак, в этом случае, я считаю, что если я правильно реализую compareTo (), это не нарушит транзитивное требование, поскольку классы с нулевыми полями всегда будут считаться одинаковыми. Я прав или неправильно интерпретирую?

Спасибо всем за ответы!

18
задан zw324 28 June 2011 в 13:51
поделиться