在Kotlin使用autoclose

在stdlib / kotlin.io中我们发现

inline fun <T : Closeable?, R> T.use(block: (T) -> R): R (source) 

然而它是在Closeable上实现的,而不是在超级接口AutoCloseable上实现的。 当使用一些使用AutoCloseable的框架时,这可能有点痛苦。

为什么Kotlin不支持使用AutoCloseble?

kotlin-stdlib用于JDK 6及更高版本,以便它不知道AutoCloseable (仅在Java 7中添加)。

但是你可以在kotlin-stdlib-jre7找到你需要的函数,为Kotlin 1.1添加了JDK 7的stdlib扩展。 您可以用它替换kotlin-stdlib依赖关系,因为它依赖于stdlib本身。

它被定义为:

 public inline fun <T : AutoCloseable?, R> T.use(block: (T) -> R): R { ... } 

(api参考) (github源码)

这是在这篇博客中首次提到的 。