Escape Sequences For Line Continuation and White Space

Escape Sequences For Line Continuation and White Space

miniJUG

В Java появятся две новые экранирующие последовательности для продолжения строки и пробела

Вышел новый черновик JEP, в котором предлагается ввести в язык Java две новые экранирующие последовательности: \<line-terminator> и \s.

Первая последовательность позволит писать длинные однострочные литералы без использования конкатенации. Например, вместо


String str = "A line that may need to " + 

"continue on the next line.";


можно будет писать


String str = "A line that may need to \ 

continue on the next line.";


Заметим, что проблему не решить с помощью блоков текста, поскольку в блоках текста присутствуют неявные переносы строк:


String str = """ 

A line that may need to 

continue on the next line.""";


Такая строка транслируется в "A line that may need to\ncontinue on the next line.", поэтому в этом случае всё равно придётся использовать символ \ на конце, чтобы подавить неявный перенос строки:


String str = """

A line that may need to \ 

continue on the next line.""";


Вторая последовательность (\s) является ничем иным как просто символом пробела (U+0020), но записанным в экранирующей форме. В текущих версиях Java экранировать пробел можно писать с помощью октальной последовательности \040 или кода \u0020. Однако \s будет короче и проще для читателя. Нужен же такой явный пробел, чтобы избежать удаления компилятором лидирующих пробельных символов на концах строк в блоках текста:

В данном случае \s является барьером, сигнализирующим компилятору, что пробелы после red, green и blue «съедать» не надо. В противном случае получилась бы строка "red\ngreen\nblue\n".

Новые последовательности предполагается реализовать в статусе Preview.


Обсудить новость

Подписаться на канал в Telegram


Report Page