Мое собственное решение для отсутствия попыток 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, и я хотел бы знать, упускаю ли я что-то важное в своем собственном решении, которое может вызвать проблемы / утечки в производственной среде.

Ответы на вопрос(1)

Ваш ответ на вопрос