junior
Text Blocks (многострочные строки)
Text Blocks (финализированы в Java 15) — многострочные строковые литералы, сохраняющие форматирование. Начинаются с """ и переноса строки, отступ определяется позицией закрывающих """.
Пример: JSON, SQL, HTML
// До Java 15 — конкатенация
String json = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30\n" +
"}";
// Java 15+ — Text Block
String json = """
{
"name": "John",
"age": 30
}
""";
// SQL
String sql = """
SELECT u.name, u.email
FROM users u
WHERE u.status = 'ACTIVE'
ORDER BY u.name
""";
// HTML с форматированием
String html = """
<html>
<body>
<h1>Hello, %s!</h1>
</body>
</html>
""".formatted("World");
Управление отступами и escape-последовательности
Пример
// Отступ определяется позицией закрывающих """
String s1 = """
Hello"""; // нет завершающего \n
String s2 = """
Hello
"""; // есть завершающий \n
// Trailing whitespace удаляется; для сохранения — \s
String s3 = """
line with trailing space\s
""";
// \: line continuation (Java 14+, без переноса строки)
String longLine = """
This is a very long line that \
continues on the same line""";
// -> "This is a very long line that continues on the same line"
Частые ошибки
- Неожиданные отступы — если закрывающие
"""не выровнены, результат содержит лишние пробелы - Text Block в аннотациях — не поддерживается в
@Queryдо Spring Data 3.x (нужна Java 17+) \nвнутри Text Block — Text Block сам добавляет переносы; явный\nудвоит перенос
Как используется в 2026
- Стандарт для встроенных SQL, JSON, HTML, XML, YAML в Java-коде
- Широко используется в
@Query(Spring Data), тестах, конфигурации
На собеседовании: покажите, что понимаете правило определения отступа (по позиции закрывающих
"""), и знаете про\sдля сохранения пробелов. Частая ошибка — путать поведение отступов.