Kotlinuse
为对象提供了函数Closeable
,但似乎他们忘记了AutoCloseable
(例如,DB 准备好的语句)与 try-with-resources 的完整 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 的新手,我想知道我自己的解决方案中是否遗漏了一些重要的东西,这些东西可能会给我在生产环境中带来问题/泄漏。