Text Blocks
Text Block (Java 15) — многострочная строка без склейки и экранирования. Если нужно вставить в код JSON, SQL, HTML или XML — раньше приходилось клеить строки через + и экранировать кавычки. Text Block пишется «как есть».
// Раньше — боль
String json = "{\n" +
" \"name\": \"Артур\",\n" +
" \"age\": 28\n" +
"}";
// Text Block — просто пишем текст
String json = """
{
"name": "Артур",
"age": 28
}
""";
Открывается """ с переносом строки, закрывается """ на отдельной строке. Всё между ними — содержимое строки.
Отступы — Text Block умно убирает общий отступ. Позиция закрывающего """ задаёт сколько пробелов срезать слева — код можно красиво выровнять в IDE, итоговая строка будет без лишних пробелов.
// Подходит для SQL
String sql = """
SELECT u.name, u.email
FROM users u
WHERE u.active = true
ORDER BY u.name
""";
// И для HTML-шаблонов
String html = """
<html>
<body>
<h1>%s</h1>
</body>
</html>
""".formatted(title);
Копнуть глубже
Управление отступом через позицию """:
String a = """
hello
world
"""; // ← закрывающий """ в колонке 8 → срезает 8 пробелов
// результат: "hello\nworld\n"
String b = """
hello
world
"""; // ← закрывающий """ в колонке 0 → ничего не срезает
// результат: " hello\n world\n"
Три служебных метода для Text Blocks:
// stripIndent() — убрать общий отступ (то что Text Block делает автоматически)
String s = " hello\n world".stripIndent(); // "hello\nworld"
// translateEscapes() — обработать \n, \t и т.д. в обычной строке
String s2 = "line1\\nline2".translateEscapes(); // "line1\nline2"
// formatted() — как String.format() но как метод экземпляра
String msg = """
Hello, %s!
You have %d messages.
""".formatted(name, count);
\ в конце строки — подавляет перенос строки (для очень длинных строк):
String s = """
Очень длинная строка которую хочется \
перенести в коде но не в результате
""";
// результат: "Очень длинная строка которую хочется перенести в коде но не в результате\n"
🎤 Закрыл тему, если можешь объяснить:
• зачем Text Blocks и чем они удобнее склейки строк через +;
• как работает автоматическое удаление отступов (если дошёл до 2-го слоя).
• как работает автоматическое удаление отступов (если дошёл до 2-го слоя).