Syntaxerweiterung mit Java 9 (JEP 213).

1. Einleitung

Den vollständigen Code findest du auf GitHub:
https://github.com/MatthiasPischka/java-neuerungen

Die Try-with-resources Anweisung wurde mit Java 7 eingeführt, um das automatische Schließen von Ressourcen zu gewährleisten. Vor Java 9 mussten Ressourcen, die in einem try-with-resources-Block verwendet wurden, direkt innerhalb der Klammer des try-Blocks deklariert werden. Das hat sich jedoch mit Java 9 geändert!

2. Beispiele

Werfen wir einen Blick auf die alte und die neue Syntax.

Vor Java 9 mussten wir folgendermaßen vorgehen:

try (FileReader fr = new FileReader("test.txt")) {
    // Logik hier
} catch (IOException e) {
    e.printStackTrace();
}

Mit Java 9 und später können wir das jetzt so machen:

final FileReader fr = new FileReader("test.txt");
try (fr) {
    // Logik hier
} catch (IOException e) {
    e.printStackTrace();
}

Oder sogar so, wenn die Variable nicht danach verändert wird (effektiv final):

FileReader fr = new FileReader("test.txt");
try (fr) {
    // Logik hier
} catch (IOException e) {
    e.printStackTrace();
}

3. Vorteile

Diese Änderung mag klein erscheinen, aber sie ist sehr bedeutend. Sie erlaubt es uns, den Code sauberer zu gestalten und das Schließen von Ressourcen sicherzustellen, ohne dass wir sie direkt im try-with-resources-Block deklarieren müssen. Zudem bietet sie uns eine größere Flexibilität in der Strukturierung unseres Codes, da wir jetzt Ressourcen außerhalb des try-with-resources-Blocks deklarieren und diese dennoch sicher schließen können.

4. Fazit

Java 9 hat uns mit dieser Verbesserung in der try-with-resources Anweisung ein mächtiges Werkzeug an die Hand gegeben, um unseren Code sauberer und effizienter zu gestalten. Es handelt sich hierbei nur um eine von vielen Verbesserungen, die mit Java 9 eingeführt wurden. Hierzu empfehle ich auch ein Blick auf https://javaalmanac.io zu werfen.

Kategorien: Entwicklung

0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert