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