2017-03-09 4 views
5

In stdlib/kotlin.io wirVerwendung mit Autoclose in Kotlin

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

finden jedoch auf Verschließbare und nicht auf dem Superschnitt AutoCloseable umgesetzt wird. Wenn Sie mit einigen Frameworks arbeiten, die AutoCloseable verwenden, kann das ein wenig schmerzhaft sein.

Warum unterstützt Kotlin nicht "Verwendung" mit AutoCloseble?

Antwort

6

Das kotlin-stdlib ist für die Verwendung mit JDK 6 und höher gedacht, so dass es AutoCloseable nicht bekannt ist (nur in Java 7 hinzugefügt).

Aber Sie können die Funktion, die Sie benötigen, in kotlin-stdlib-jre7, die Erweiterung STDLIB für JDK 7 für Kotlin 1.1 hinzugefügt finden. Sie können die kotlin-stdlib Abhängigkeit damit ersetzen, da es von der Basisstdlib selbst abhängt.

Es ist wie folgt definiert:

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

(api reference)(github source)

Und wurde es zuerst in this blog post erwähnt.

+0

Ein guter Grund, auf 1.1 dann zu aktualisieren :). Danke vielmals ! –