Как вы знаете, поток, сгенерированный из ресурсов ввода-вывода, должен быть закрыт явносоздайте новый экземпляр, чтобы я потерял контроль над закрытием
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....
}