Java 22 新特性:字符串模板(String Templates)让拼接更优雅、更安全
字符串拼接一直是 Java 开发中的高频操作,从最早的 +
拼接,到 String.format()
,再到文本块(Text Blocks),JDK 22 引入了 字符串模板(String Templates),不仅让拼接更简洁,还提升了安全性和可维护性。
1. 什么是字符串模板?
字符串模板是一种新的字符串语法,可以直接在字符串中嵌入变量、表达式,甚至进行安全过滤。它的核心思想是将模板字符串与 模板处理器(Template Processor) 结合,实现更强大的功能。
2. 基本用法
import static java.lang.StringTemplate.STR;public class StringTemplateDemo {public static void main(String[] args) {String name = "Alice";int score = 95;String message = STR."学生 \{name} 的分数是 \{score}";System.out.println(message);}
}
输出:
学生 Alice 的分数是 95
3. 变量与表达式插值
不仅能插入变量,还能直接计算表达式:
String result = STR."总价为 \{price * quantity} 元";
4. 安全处理(SQL/XSS 防护)
字符串模板可以结合自定义处理器,自动对变量进行转义,例如生成安全的 SQL:
import static java.lang.StringTemplate.RAW;public class SqlTemplateDemo {public static void main(String[] args) {String table = "users";String column = "name";String query = RAW."SELECT \{column} FROM \{table}";System.out.println(query); }
}
通过自定义处理器,可以对 table
和 column
进行安全校验,防止 SQL 注入。
5. 对比传统方式
方式 | 可读性 | 安全性 | 性能 |
---|---|---|---|
+ 拼接 | 差 | 无防护 | 中 |
String.format | 一般 | 无防护 | 中 |
字符串模板 | 高 | 可防护 | 高 |
6. 应用场景
- 日志格式化输出
- SQL/HTML 模板渲染
- REST API 请求构造
- 配合 Text Blocks 生成多行结构化文本
7. 总结
字符串模板让 Java 在字符串处理上更贴近现代语言(如 Kotlin、JavaScript),结合模板处理器的能力,可以同时提升代码可读性与安全性,尤其适合对输出格式有严格要求的业务场景。