Говорят, что когда входной параметр равен null, compareTo() должен вызывать исключение NullPointerException. Тем не менее, я реализую класс, который должен сравнивать поля с типом String. Эти поля не обязательно должны быть обязательными. Интересно, в этом случае
1) Что я должен вернуть, когда ввод равен нулю? Должны ли любые ненулевые строки лексикографически больше или меньше нуля?
и
2) Если это считается плохой практикой, есть ли поддерживающие аргументы? Должен ли я заставить пользователя использовать пустые строки? Если используется пустая строка, не будет ли это путать случай, когда поле не применимо, и случай, когда поле пусто? И если нужно исключить исключение, то, кроме предупреждения пользователя в руководстве, что еще я могу сделать?
РЕДАКТОР: Я не могу четко выражать себя здесь, но в программе, которую я реализую, строки, которые могут быть пустыми, - это все поля или класс, который не должен быть нулевым. Другими словами, объекты compareTo() не могут быть нулевыми, просто их частные поля могут быть. Поэтому в этом случае я считаю, что если я правильно выполняю функцию compareTo(), это не будет нарушать переходное требование, поскольку классы с нулевыми полями будут считаться одинаковыми всегда. Правильно ли я интерпретирую это неправильно?
Спасибо всем за ответы!