Des blocs de texte devraient être publiés en Java 13. Cela a été annoncé dans
JEP 355 .
Les blocs de texte sont un littéral de chaîne multi-lignes qui élimine le besoin d'échapper la plupart des caractères spéciaux et fait automatiquement des sauts de ligne.
Il s'agit d'une nouvelle tentative d'études commençant dans JEP 326 (les littéraux de chaîne non traités ont été rappelés).

Jep 355 buts
- Simplifiez l'écriture de code Java en évitant les séquences d'échappement.
- Amélioration de la lisibilité du code.
Ce que le JEP 355 n'essaie certainement pas d'atteindre
- Ce n'est pas une tentative de définir un nouveau type de référence, comme
java.lang.String
. - Il ne s'agit pas d'une tentative de remplacer l'opérateur de chaîne "+".
- Les blocs de texte ne prennent pas en charge l'interpolation de ligne. Cette fonctionnalité peut être ajoutée dans les JEP suivants.
La motivation
En Java pour intégrer XML, HTML, JSON, etc. une édition importante avec blindage et concaténation des chaînes est généralement requise. Un fragment est souvent difficile à lire et difficile à entretenir.
En conséquence, le nouveau JEP améliore à la fois la lisibilité et ajoute la possibilité d'écrire une large classe de programmes Java - en utilisant une ligne composée de plusieurs "lignes" et sans aucun désordre visuel. caractères. En fait, il s'agit d'un bloc de texte bidimensionnel, et non d'une séquence de caractères unidimensionnelle.
Syntaxe et description
Les blocs de lignes sont encadrés par
"""
et
"""
droite et à gauche. Le contenu du bloc commence par le premier caractère après
"""
et se termine par le dernier caractère avant
"""
. Les guillemets triples sont sélectionnés pour qu'il soit clair qu'il s'agit de lignes de texte, mais pour que vous puissiez les distinguer d'un littéral de chaîne ordinaire (
"..."
).
Les blocs peuvent contenir des guillemets (
"
) directement, sans barre oblique (
\
). Vous pouvez également utiliser
\"
, mais ce n'est pas recommandé.
L'habillage de ligne se fait automatiquement. L'utilisation de \ n est autorisée mais non recommandée.
""" line 1 line 2 line 3 """
de même
"line 1\nline 2\nline 3\n"
ou
"line 1\n" + "line 2\n" + "line 3\n"
Voici un exemple d'un bloc de texte vide:
String empty = """ """;
Voici la mauvaise pratique d'utiliser des blocs de texte:
String a = """"""; String b = """ """; String c = """ "; String d = """ abc \ def """;
Échapper des séquences en blocs de texte
Les séquences d'échappement sont interprétées. Cela signifie que les développeurs peuvent écrire des séquences d'échappement, par exemple
\n
intérieur de blocs.
Des exemples
HTML
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
À l'ancienne 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`; """;
À l'ancienne String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" + "WHERE `CITY` = 'INDIANAPOLIS'\n" + "ORDER BY `EMP_ID`, `LAST_NAME`;\n";
Script
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval(""" function hello() { print('"Hello, world"'); } hello(); """);
À l'ancienne ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval("function hello() {\n" + " print('\"Hello, world\"');\n" + "}\n" + "\n" + "hello();\n");