А можно вопросик про .use { } ?
inline fun <reified T> File.serialize(value: T) =
ObjectOutputStream(outputStream().buffered()).use {
it.writeObject(value)
}
Выглядит более-менее норм, но есть нюанс: если ошибка возникнет в ObjectOutputStream конструкторе, то стрим не закроется.
Получается, нужно так?
inline fun <reified T> File.serialize2(value: T) =
outputStream().buffered().use {
ObjectOutputStream(it).use {
it.writeObject(value)
}
}
Или есть способ, чтобы не плодились вложенные use’ы?