Это написано надлежащим образом в java8? - PullRequest
1 голос
/ 21 апреля 2020

У меня есть POJO, где у меня есть поле Map<String, String>.

Мне нужно выполнить следующие проверки.

  1. Проверить объект POJO null
  2. Проверить map равно нулю
  3. Получить значение из карты
  4. Разобрать в логическое значение - в приведенном ниже фрагменте этого не происходит
  5. Вернуть true или false.

Для отрицательных случаев в первом утверждении 4 должно приводить к ложному значению.

У меня есть что-то, как показано ниже.

Optional<Object> optional = Optional.ofNullable(event)
                            .map(Event::getAttributes)
                            .map(attrMap -> attrMap.get("restructured"));

return optional.isPresent();

Как это сделать способом Java8? Я вижу, что если значение равно нулю, NPE выбрасывается. Есть ли способ сделать, как я упоминал в шагах, т.е. если null возвращает false?

1 Ответ

2 голосов
/ 21 апреля 2020

Optional#orElse - это именно то, что вам нужно:

return Optional.ofNullable(e)
  .map(Event::getAttribute)
  .map(m -> m.get("restructured"))
  .map(Boolean::parseBoolean)
  .orElse(false);

Если на каком-либо из шагов выдается null, то результат разрешается до false.

...