Вопрос проверяет понимание текстовых блоков (text blocks) в Java, которые упрощают работу с многострочными строками и улучшают читаемость кода.
Текстовые блоки (text blocks) в Java — это специальный синтаксис для записи многострочных строковых литералов, представленный как стандартная функция начиная с Java 15. Они решают проблему громоздкого форматирования длинных строк, которые часто встречаются при встраивании HTML, JSON, XML, SQL-запросов или многострочных сообщений в код.
Текстовый блок начинается с трёх двойных кавычек, за которыми следует перевод строки. Содержимое блока записывается на следующих строках, а закрывается также трёмя кавычками. Например:
String html = """
<html>
<body>
<p>Hello, World!</p>
</body>
</html>
""";Обратите внимание на символ новой строки после открывающих кавычек — он обязателен. Компилятор удаляет случайные отступы (incidental indentation), основываясь на самой левой позиции закрывающих кавычек, что сохраняет только значимые отступы внутри блока.
String::stripIndent() применяется автоматически, убирая лишние пробелы слева.Сравним обычный многострочный литерал и текстовый блок для JSON:
// Старый способ (громоздко)
String jsonOld = "{\n" +
" \"name\": \"Alice\",\n" +
" \"age\": 30\n" +
"}";
// С текстовым блоком (чисто)
String jsonNew = """
{
"name": "Alice",
"age": 30
}
""";Текстовый блок явно проще для чтения и редактирования. Также можно использовать методы, такие как formatted(), для подстановки переменных прямо внутри блока, аналогично String.format().
Текстовые блоки идеальны для встраивания статических многострочных данных в код: шаблоны HTML, JSON-конфигурации, SQL-запросы в простых приложениях, длинные сообщения об ошибках или приветственные тексты. Однако для динамически формируемых строк со сложной логикой лучше использовать другие средства, например, шаблонизаторы или StringBuilder.
Вывод: Текстовые блоки стоит применять везде, где требуется читаемое представление многострочных строковых констант в Java-коде, что уменьшает количество ошибок и упрощает поддержку.