En Java 13 quieren agregar "bloques de texto"

Se planea lanzar bloques de texto en Java 13. Esto se anunció en JEP 355 .

Los bloques de texto son un literal de cadena de varias líneas que elimina la necesidad de escapar de la mayoría de los caracteres especiales y realiza automáticamente saltos de línea.

Este es un intento adicional de estudios que comienzan en JEP 326 (se recuperaron los literales de cadena no procesados).



Jep 355 goles


  • Simplifique la escritura de código Java evitando secuencias de escape.
  • Mejora de la legibilidad del código.

Lo que el JEP 355 definitivamente no está tratando de lograr


  • Este no es un intento de definir un nuevo tipo de referencia, como java.lang.String .
  • Esto no es un intento de anular el operador de cadena "+".
  • Los bloques de texto no admiten la interpolación de líneas. Esta característica se puede agregar en JEP posteriores.


Motivación


En Java para incrustar XML, HTML, JSON, etc. Por lo general, se requiere una edición significativa con blindaje y concatenación de cadenas. Un fragmento es a menudo difícil de leer y difícil de mantener.

En consecuencia, el nuevo JEP mejora la legibilidad y agrega la capacidad de escribir una amplia clase de programas Java, utilizando una línea que consta de varias "líneas" y sin ningún desorden visual. personajes De hecho, este es un bloque de texto bidimensional, no una secuencia unidimensional de caracteres.

Sintaxis y Descripción


Los bloques de líneas están enmarcados por """ y """ derecha e izquierda. El contenido del bloque comienza con el primer carácter después de """ y termina con el último carácter antes de """ . Las comillas triples se eligen para que quede claro que se trata de líneas de texto, pero para que pueda distinguirlas de un literal de cadena normal ( "..." ).

Los bloques pueden contener comillas ( " ) directamente, sin una barra inclinada ( \ ). También puede usar \" , pero esto no es recomendable.

El ajuste de línea se realiza automáticamente. El uso de \ n está permitido pero no recomendado.

 """ line 1 line 2 line 3 """ 

de manera similar

 "line 1\nline 2\nline 3\n" 

o

 "line 1\n" + "line 2\n" + "line 3\n" 

Aquí hay un ejemplo de un bloque de texto vacío:

 String empty = """ """; 

Aquí está la mala práctica de usar bloques de texto:

 String a = """"""; String b = """ """; String c = """ "; String d = """ abc \ def """; 

Secuencias de escape en bloques de texto


Las secuencias de escape se interpretan. Esto significa que los desarrolladores pueden escribir secuencias de escape, por ejemplo, \n dentro de bloques.

Ejemplos


HTML


 String html = """ <html> <body> <p>Hello, world</p> </body> </html> """; 

Camino viejo
 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`; """; 

Camino viejo
 String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" + "WHERE `CITY` = 'INDIANAPOLIS'\n" + "ORDER BY `EMP_ID`, `LAST_NAME`;\n"; 


Guión


 ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval(""" function hello() { print('"Hello, world"'); } hello(); """); 

Camino viejo
 ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval("function hello() {\n" + " print('\"Hello, world\"');\n" + "}\n" + "\n" + "hello();\n"); 

Source: https://habr.com/ru/post/454144/


All Articles