Проблема отображения объектов лямбда-выражения - PullRequest
0 голосов
/ 19 октября 2018

У меня есть PrimaryDTO класс, который содержит List<SecondaryDTO>, и этот SecondaryDTO сам содержит Set<SecondaryCategoryDTO>, и, наконец, SecondaryCategoryDTO содержит логическое значение status .

В приведенном ниже утверждении я хочу проверить, является ли status значение true , а затем войти внутрь, если оператор не введен.

if(Optional.ofNullable(PrimaryDTO.getSecondaryDTOs()).
    orElse(PrimaryDTO.getSecondaryDTOs()).stream().filter(Objects::nonNull)
    .map(x->x.getSecondaryCategories()).anyMatch(z-> z.isStatus()==true))

Но в вышеприведенном синтаксисе z.isStatus () выдает ошибку, поскольку говорит, что z является set .Я уже повторяю Set через .map с getSecondaryCategories () .Я не понимаю, почему он принимает это как установлено?

1 Ответ

0 голосов
/ 19 октября 2018

Похоже, у вас может быть PrimaryDTO как ноль и это List<SecondaryDTO> как ноль, и некоторые элементы в этом List также могут быть нулевыми, втакой случай:

Optional<Boolean> op = Optional.ofNullable(primaryDTO)
            .flatMap(x -> Optional.ofNullable(x.getSecondaryDTOs()))
            .map(x -> x.stream()
                    .filter(Objects::nonNull)
                    .flatMap(y -> y.getSecondaryCategoryDTOs().stream())
                    .map(SecondaryCategoryDTO::isStatus)
                    .anyMatch(z -> z == true)); 

if(op.isPresent()){
    // do your work
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...