Я принимаю все ответы технически.Практически я не буду использовать ни один из них в коде, который находится под моим контролем, потому что все предоставленные решения работают вокруг основной проблемы: нулевых значений.СОХРАНИТЕ СВОЮ ОСНОВНУЮ МОДЕЛЬ БЕСПЛАТНО ОТ NULL-ЗНАЧЕНИЙ, и в этом случае вопрос устарел.
На системных границах, таких как сторонние библиотеки, иногда приходится иметь дело с нулевыми значениями.Они должны быть преобразованы в значимые значения для базовой модели.Там данные решения полезны.
Даже если Oracle рекомендует использовать метод equals для нулевой безопасности, подумайте об этом: как только вы примете нулевые значения, ваша модель становится хрупкой.Метод equals не будет последним методом, где вы будете проверять на ноль.Вы должны управлять нулевыми проверками в иерархии вызовов методов.Методы не могут быть повторно использованы из коробки больше.Вскоре каждый параметр будет проверен на нулевое значение.
Я увидел обе стороны:
С одной стороны, код, полный нулевых проверок, методы, которые больше не доверяют ни одному параметру, и разработчики, которые боятсязабудьте нулевую проверку.
С другой стороны, код с полными выразительными утверждениями, которые ясно дают понять, что они имеют полнофункциональные объекты, которые можно использовать, не опасаясь исключений NullPointerExceptions.