تم تخطيط كتل النص في Java 13. تم الإعلان عن ذلك في
JEP 355 .
كتل النص عبارة عن سلسلة حرفية متعددة الأسطر تزيل الحاجة إلى الهروب من معظم الأحرف الخاصة وتؤدي تلقائيًا إلى فواصل الأسطر.
هذه محاولة أخرى في الدراسات التي تبدأ في JEP 326 (تم استرجاع حرفية السلسلة غير المجهزة).

جيب 355 هدفا
- تبسيط كتابة تعليمات برمجية Java عن طريق تجنب تسلسل الهروب.
- تحسين قراءة التعليمات البرمجية.
ما JEP 355 هو بالتأكيد لا تحاول تحقيقه
- هذه ليست محاولة لتحديد نوع مرجع جديد ، مثل
java.lang.String
. - هذه ليست محاولة لتجاوز عامل السلسلة "+".
- كتل النص لا تدعم الاستيفاء الخطي. يمكن إضافة هذه الميزة في JEPs اللاحقة.
حافز
في Java لتضمين XML و HTML و JSON ، إلخ. عادة ما يكون التحرير المهم مع التدريع وسلسل السلاسل مطلوبًا. غالبًا ما يصعب قراءة جزء ما ويصعب صيانته.
وفقًا لذلك ، يعمل JEP الجديد على تحسين قابلية القراءة ويضيف القدرة على كتابة فئة واسعة من برامج Java - باستخدام خط يتكون من عدة "خطوط" ودون أي فوضى بصرية. الأحرف. في الواقع ، هذا عبارة عن كتلة نصية ثنائية الأبعاد ، وليست سلسلة أحرف أحادية البعد.
بناء الجملة والوصف
كتل الخطوط مؤطرة بـ
"""
و
"""
يمينًا ويسارًا. يبدأ محتوى الكتلة بالحرف الأول بعد
"""
وينتهي بالحرف الأخير قبل
"""
. يتم اختيار علامات الاقتباس الثلاثية بحيث يكون من الواضح أنها سطور نصية ، ولكن يمكنك تمييزها عن سلسلة حرفية عادية (
"..."
).
يمكن أن تحتوي الكتل على علامات اقتباس (
"
) مباشرةً ، بدون شرطة مائلة (
\
). يمكنك أيضًا استخدام
\"
، لكن هذا غير مستحسن.
يتم التفاف الخط تلقائيًا. استخدام \ n مسموح ولكن غير مستحسن.
""" line 1 line 2 line 3 """
وبالمثل
"line 1\nline 2\nline 3\n"
أو
"line 1\n" + "line 2\n" + "line 3\n"
فيما يلي مثال على كتلة نصية فارغة:
String empty = """ """;
إليك الممارسة السيئة المتمثلة في استخدام كتل النص:
String a = """"""; String b = """ """; String c = """ "; String d = """ abc \ def """;
تسلسل الهروب في كتل النص
يتم تفسير تسلسل الهروب. هذا يعني أنه يمكن للمطورين كتابة تسلسل هروب ، على سبيل المثال ،
\n
داخل الكتل.
أمثلة
HTML
String html = """ <html> <body> <p>Hello, world</p> </body> </html> """;
الطريقة القديمة 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`; """;
الطريقة القديمة String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`\n" + "WHERE `CITY` = 'INDIANAPOLIS'\n" + "ORDER BY `EMP_ID`, `LAST_NAME`;\n";
سيناريو
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval(""" function hello() { print('"Hello, world"'); } hello(); """);
الطريقة القديمة ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); Object obj = engine.eval("function hello() {\n" + " print('\"Hello, world\"');\n" + "}\n" + "\n" + "hello();\n");