Javadocs

я проблемы с выяснением, почемуfindAny() генерирует исключение нулевого указателя послеfilter() операция на потоке. В этом конкретном тестовом случае операция фильтрации должна была отфильтровать все, не оставляя результатов дляfindAny().

Optional<JsonNode> encryption = sseEncryptionList.stream()
                  .filter(n -> n.textValue().equals("AES256")) //Filters out everything
                  .findAny(); //Throws null pointer exception

Трассировка стека:

Exception in thread "main" java.lang.NullPointerException
at example.Main.lambda$main$0(Main.java:41)
at java.util.stream.ReferencePipeline операция на потоке. В этом конкретном тестовом случае операция фильтрации должна была отфильтровать все, не оставляя результатов для1.accept(ReferencePipeline.java:174)
at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1351)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:469)
at example.Main.main(Main.java:42)

Это ожидаемое поведение дляfindAny() бросить исключение нулевого указателя, если поток не содержит никаких элементов?

Изменить: Какой элегантный и функциональный способ разрешить операции фильтра, которые могут отфильтровать все элементы?

Ответы на вопрос(3)

Ваш ответ на вопрос