Как украсить экземпляр потока из источника, используя ресурсы ввода-вывода - PullRequest
0 голосов
/ 10 октября 2018

Как вы знаете, поток, сгенерированный из ресурсов ввода-вывода, должен быть закрыт явносоздайте новый экземпляр, чтобы я потерял контроль над закрытием

Stream<T> removeNulls(Stream<T> input){
    input.filter(Objects::nonNull) //At this point, the returned pointer is a whole different stream which does not bind closing to the old one
}

Если бы существовал способ связать закрытие потока фильтра с исходным ... Тогда это было бы возможно

try (Stream<T> myDecoratedStream = MyClass.removeNulls(myRepo.streamAll())){
   myDecoratedStrean....
}

1 Ответ

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

Похоже, onClose - это то, что вам нужно, что-то вроде:

yourStream.filter(....).onClose(SomeRunnable)
...