Безопасное перемещение по цепочкам вызовов «Get» с необязательными
В программировании на Java часто встречаются цепочки вызовов «Get», например следующие:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
Чтобы избежать потенциальных исключений NullPointerException, разработчики часто прибегают к подробной проверке значений NULL:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
Этот подход становится еще более громоздким при использовании более длинных цепочек вызовов. Есть ли более элегантное решение?
Да, с появлением в Java 8 типа «Необязательный» обработка значений NULL в цепочках get стала значительно проще.
Использование параметра «Необязательный» для обработки значений NULL
Optional — это класс-оболочка, представляющий необязательное значение. Он может либо содержать ненулевое значение, либо быть пустым.
Чтобы использовать необязательный параметр для обработки значений NULL в цепочках получения, мы можем использовать его возможности создания цепочек с помощью метода map().
Рассмотрите следующий пример:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
Этот код создает цепочку дополнительных объектов, каждый из которых представляет результат соответствующего вызова get.
Преимущества использования Необязательный
Использование необязательного параметра дает несколько преимуществ:
Заключение
Если вы не можете избежать Нарушая Закон Деметры, использование Необязательного является настоятельно рекомендуемым подходом для безопасной навигации по цепочкам вызовов «get». Он обеспечивает элегантный и эффективный способ обработки нулей, обеспечивая надежность вашего кода.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3