[JAVA] Der Typ, der mit Kotlin mit Ressourcen versucht

Plötzliche Schlussfolgerung

Leider hat Kotlin selbst keine Ressourcen zum Ausprobieren. Stattdessen gibt es "use" als äquivalente Funktion (genau genommen Erweiterungsfunktion: Erweiterungsfunktion).

java


try (OutputStream ost = Files.newOutputStream(path)) {
    FileCopyUtils.copy(inst, ost);
} catch (Exception e) {
    e.printStackTrace();
}

Das ist ↓

kotlin


try {
    Files.newOutputStream(path).use { ost ->
        FileCopyUtils.copy(inst, ost)
    }
} catch (e: Exception) {
    e.printStackTrace()
}

Es wird so sein.

Wenn der Inhalt von "use" eine Zeile ist, wird er häufig ohne Zeilenumbrüche wie "Files.newOutputStream (path) .use {ost-> FileCopyUtils.copy (inst, ost)}" geschrieben. Ich mag Kotlin, weil es klarer geschrieben werden kann als Java.

Bei mehreren Ressourcen

Wenn Sie mehrere Ressourcen verwenden möchten, können Sie "use" verketten.

kotlin


try {
    Files.newOutputStream(path).use { ost ->
        Files.newInputStream(path).use { inst ->
            FileCopyUtils.copy(inst, ost)
        }
    }
} catch (e: Exception) {
    e.printStackTrace()
}

Wenn Sie zu viel verketten, ist das Nest tiefer.

Referenz

Recommended Posts

Der Typ, der mit Kotlin mit Ressourcen versucht
Der Typ, der die Sitzungsreplikation mit Tomcat durchführt
Der Typ, der mit Fehlern im Stream nicht umgehen kann
Ein beschissener Typ, der Layoutanpassungen bei der Entwicklung von libGDX nüchtern und effizient vornimmt
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
Ändern Sie den Port mit SpringBoot
Verspotten Sie den Konstruktor mit PowerMock
Ich habe das Kotlin-Startbuch gelesen
Mit dem Fehler Cordova-> Looper.prepare ()
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!