在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源码)
这是在这篇博客中首次提到的 。