Textblöcke sind für die Veröffentlichung in Java 13 geplant. Dies wurde in
JEP 355 angekündigt.
Textblöcke sind mehrzeilige Zeichenfolgenliterale, bei denen die meisten Sonderzeichen nicht mehr maskiert werden müssen und die automatisch Zeilenumbrüche verursachen.
Dies ist ein weiterer Versuch von Studien, die in JEP 326 beginnen (unverarbeitete String-Literale wurden zurückgerufen).

Jep 355 Tore
- Vereinfachen Sie das Schreiben von Java-Code, indem Sie Escape-Sequenzen vermeiden.
- Verbesserung der Lesbarkeit von Code.
Was der JEP 355 definitiv nicht erreichen will
- Dies ist kein Versuch, einen neuen Referenztyp wie
java.lang.String
zu definieren. - Dies ist kein Versuch, den Zeichenfolgenoperator "+" zu überschreiben.
- Textblöcke unterstützen keine Zeileninterpolation. Diese Funktion kann in nachfolgenden JEPs hinzugefügt werden.
Motivation
In Java zum Einbetten von XML, HTML, JSON usw. In der Regel ist eine umfangreiche Bearbeitung mit Abschirmung und Verkettung von Zeichenfolgen erforderlich. Ein Fragment ist oft schwer zu lesen und schwer zu pflegen.
Dementsprechend verbessert der neue JEP sowohl die Lesbarkeit als auch die Möglichkeit, eine breite Klasse von Java-Programmen zu schreiben - unter Verwendung einer Zeile, die aus mehreren "Zeilen" besteht, und ohne visuelle Unordnung. Zeichen. Tatsächlich ist dies ein zweidimensionaler Textblock, keine eindimensionale Folge von Zeichen.
Syntax und Beschreibung
Zeilenblöcke werden rechts und links von
"""
und
"""
eingerahmt. Der Inhalt des Blocks beginnt mit dem ersten Zeichen nach
"""
und endet mit dem letzten Zeichen vor
"""
. Dreifache Anführungszeichen werden so gewählt, dass klar ist, dass es sich um Textzeilen handelt, Sie sie jedoch von einem regulären Zeichenfolgenliteral (
"..."
) unterscheiden können.
Blöcke können Anführungszeichen (
"
) direkt ohne Schrägstrich (
\
) enthalten. Sie können auch
\"
, dies wird jedoch nicht empfohlen.
Der Zeilenumbruch erfolgt automatisch. Die Verwendung von \ n ist zulässig, wird jedoch nicht empfohlen.
""" line 1 line 2 line 3 """
ähnlich
"line 1\nline 2\nline 3\n"
oder
"line 1\n" + "line 2\n" + "line 3\n"
Hier ist ein Beispiel für einen leeren Textblock:
String empty = """ """;
Hier ist die schlechte Praxis der Verwendung von Textblöcken:
String a = """"""; String b = """ """; String c = """ "; String d = """ abc \ def """;
Escape-Sequenzen in Textblöcken
Escape-Sequenzen werden interpretiert. Dies bedeutet, dass Entwickler Escape-Sequenzen schreiben können, z. B.
\n
innerhalb von Blöcken.
Beispiele
HTML
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
Alter Weg String html = "<html>\n" + " <body>\n" + " <p>Hello, world</p>\n" + " </body>\n" + "</html>\n";
SQL
String query = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = 'INDIANAPOLIS' ORDER BY `EMP_ID`, `LAST_NAME`; """;
Alter Weg String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" + "WHERE `CITY` = 'INDIANAPOLIS'\n" + "ORDER BY `EMP_ID`, `LAST_NAME`;\n";
Skript
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval(""" function hello() { print('"Hello, world"'); } hello(); """);
Alter Weg ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval("function hello() {\n" + " print('\"Hello, world\"');\n" + "}\n" + "\n" + "hello();\n");