Мое собственное решение для отсутствия попыток Kotlin с ресурсами
Котлин обеспечиваетuse
функция дляCloseable
объекты, но, кажется, они забыли рассмотретьAutoCloseable
(например, операторы, подготовленные БД) для полного Java-эквивалента попытки с ресурсами.
Я реализовал следующее «домашнее» решение:
inline fun <T:AutoCloseable,R> trywr(closeable: T, block: (T) -> R): R {
try {
return block(closeable);
} finally {
closeable.close()
}
}
Тогда вы можете использовать его следующим образом:
fun countEvents(sc: EventSearchCriteria?): Long {
return trywr(connection.prepareStatement("SELECT COUNT(*) FROM event")) {
var rs = it.executeQuery()
rs.next()
rs.getLong(1)
}
}
Я новичок в Kotlin, и я хотел бы знать, упускаю ли я что-то важное в своем собственном решении, которое может вызвать проблемы / утечки в производственной среде.