Blocos de texto estão planejados para lançamento no Java 13. Isso foi anunciado no
JEP 355 .
Blocos de texto é um literal de cadeia de várias linhas que elimina a necessidade de escapar da maioria dos caracteres especiais e faz automaticamente quebras de linha.
Esta é uma tentativa adicional de estudos iniciados no JEP 326 (literais de cadeias não processadas foram recuperados).

Jep 355 gols
- Simplifique a gravação de código Java, evitando sequências de escape.
- Melhorando a legibilidade do código.
O que o JEP 355 definitivamente não está tentando alcançar
- Esta não é uma tentativa de definir um novo tipo de referência, como
java.lang.String
. - Esta não é uma tentativa de substituir o operador de cadeia "+".
- Blocos de texto não suportam interpolação de linha. Esse recurso pode ser adicionado nos JEPs subsequentes.
Motivação
Em Java para incorporar XML, HTML, JSON etc. geralmente é necessária uma edição significativa com blindagem e concatenação de strings. Um fragmento geralmente é difícil de ler e difícil de manter.
Consequentemente, o novo JEP melhora a legibilidade e adiciona a capacidade de escrever uma ampla classe de programas Java - usando uma linha que consiste em várias "linhas" e sem nenhuma confusão visual. caracteres. De fato, este é um bloco de texto bidimensional, não uma sequência unidimensional de caracteres.
Sintaxe e Descrição
Blocos de linhas são emoldurados por
"""
e
"""
direita e esquerda. O conteúdo do bloco começa com o primeiro caractere depois de
"""
e termina com o último caractere antes de
"""
. As aspas triplas são escolhidas para que fique claro que essas são linhas de texto, mas para que você possa distingui-las de uma string regular literal (
"..."
).
Os blocos podem conter aspas (
"
) diretamente, sem uma barra (
\
). Você também pode usar
\"
, mas isso não é recomendado.
A quebra de linha é feita automaticamente. O uso de \ n é permitido, mas não recomendado.
""" line 1 line 2 line 3 """
da mesma forma
"line 1\nline 2\nline 3\n"
ou
"line 1\n" + "line 2\n" + "line 3\n"
Aqui está um exemplo de um bloco de texto vazio:
String empty = """ """;
Aqui está a má prática de usar blocos de texto:
String a = """"""; String b = """ """; String c = """ "; String d = """ abc \ def """;
Seqüências de escape em blocos de texto
Sequências de escape são interpretadas. Isso significa que os desenvolvedores podem escrever seqüências de escape, por exemplo,
\n
dentro de blocos.
Exemplos
HTML
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
Caminho antigo 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`; """;
Caminho antigo 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(); """);
Caminho antigo ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval("function hello() {\n" + " print('\"Hello, world\"');\n" + "}\n" + "\n" + "hello();\n");