#java
Есть вот такая конструкция Integer insertId = App.officeAccountDao.insertOfficeAccountStep(officeAccountStep).intValue(); OfficeAccountItems officeAccountItems = null; if (insertId != null) { officeAccountItems = App.officeAccountDao.getOfficeAccountItemById(insertId); if (officeAccountItems == null) { response.status(404); return ""; } } В первой строке происходит добавление в БД и запрос возвращает id добавленной записи. Затем проверяется, равен ли id null или нет, и если не равен, то происходит выборка этой добавленной записи по ее id. Как избавиться от этих проверок на null, используя Optional? Написал вот так OfficeAccountItems officeAccountItems = Optional.ofNullable(App.officeAccountDao.insertOfficeAccountStep(officeAccountStep)) .map(BigInteger::intValue) .filter(Objects::nonNull) .map(id -> App.officeAccountDao.getOfficeAccountItemById(id)) .orElse(null); if (officeAccountItems == null) { response.status(404); return ""; } Но не уверен что это верно. Оно вроде как работает, и даже работает так как надо, но все таки, по-моему, что-то не так здесь написано
Ответы
Ответ 1
Можно написать просто как-то так: return Optional.ofNullable(App.officeAccountDao.insertOfficeAccountStep(officeAccountStep)) .map(BigInteger::intValue) .map(App.officeAccountDao::getOfficeAccountItemById) .orElseGet(() -> { response.status(404); return ""; }); Использование filter(Objects::nonNull) точно лишнее, т.к. Optional и так внутри себя всё проверяет.
Комментариев нет:
Отправить комментарий