Является ли stream.spliterator()
неявным закрытием stream
, или есть необходимость явно закрыть его после?
Stream<String> stream = Stream.of("a", "b", "c");
Spliterator<T> spliterator = stream.spliterator();
// Some low lever operation with the spliterator
stream.close(); // do we need to close?
На первый взгляд кажется, что метод .spliterator()
закрывает stream
, но не вызывает stream.close()
. По крайней мере, если я сразу же закрою его после вызова метода .spliterator()
, он, похоже, не касается операций spliterator.
Stream<String> stream = Stream.of("a", "b", "c").limit(2);
Spliterator<T> spliterator = stream.spliterator();
stream.close();
// Some low lever operation with the spliterator
Этот вопрос может быть распространен на другие методы stream
, например .findAny()
.
stream.findAny() // Can I assume that I don't need to close the stream?
stream.onClose(() -> System.out.println("hi!")).findAny()`
// when the `onClose()` action will be called?
Причиной этого вопроса является глубокая ясность, когда a stream
требуется явно закрывать, а в тех случаях, когда мне не нужно явно закрывать его, когда будут выполняться определенные действия onClose()
?