Как обрабатывать NPE в промежуточных операциях Optional / Stream? - PullRequest
1 голос
/ 07 августа 2020
public class Person {
  private String name;
  private Address address;
}
public class Address {
  private City city
}
public class City {
  private String name;
}


Optional.of(Person::getAddress).map(Address::getCity).map(City::getName).orElseThrow();

Средние два .map могут выдавать NPE, потому что getAddress и getCity могут возвращать null. Как лучше всего справиться с NPE?

1 Ответ

1 голос
/ 07 августа 2020
Person person = new Person();
Optional.ofNullable(person.getAddress())
        .flatMap(p -> Optional.of(p.getCity()))
        .flatMap(c -> Optional.of(c.getName()))
        .orElseThrow(NullPointerException::new);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...