Первый ответ - всегда возвращать пустые Lists, Sets, Arrays вместо null для методов, возвращающих такого рода объекты. Пункт 43 из Effective Java второго издания от Джошуа Блоха
Рассмотрите паттерн Null Object Pattern. Основная идея заключается в том, что у вас есть специальная версия вашего класса, которую вы можете использовать вместо null.
В этой специальной версии поля установлены на значения по умолчанию, которые имеют смысл в вашем коде. Это означает, что у вас никогда не будет нулевых ссылок, у вас просто есть класс, который не делает многого или возвращает значения по умолчанию при использовании.
По моему мнению, нулевые чеки - это зло. Они показывают, что не существует контракта, который устанавливает, может ли obj
быть null
или нет. Хорошей альтернативой будет написать код таким образом, чтобы obj
гарантированно никогда не был null
. Например: если геттер должен получить не null
obj
, но не может, он должен сам выбросить исключение.